网站开发和游戏开发,网站内容更新外包,湖北疾控发布最新通告,做家教网站资质介绍#xff1a; LinkedHashMap是一个Map实现#xff0c;它维护其元素的插入顺序。 它扩展了HashMap类#xff1a; public class LinkedHashMapK,V extends HashMapK,V implements MapK,V就像HashMap一样 #xff0c;它允许存储一个null键和许多n… 介绍 LinkedHashMap是一个Map实现它维护其元素的插入顺序。 它扩展了HashMap类 public class LinkedHashMapK,V extends HashMapK,V implements MapK,V 就像HashMap一样 它允许存储一个null键和许多null值。 实例化 我们可以使用以下构造函数之一来创建LinkedHashMap LinkedHashMap() //default capacity 16 with load factor of 0.75LinkedHashMap(Map? extends K,? extends V map)LinkedHashMap(int initialCapacity)LinkedHashMap(int initialCapacity, float loadFactor)LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder) 最后一个构造函数还接受布尔参数accessOrder 。 当我们将true传递给accessOrder时我们将实例化一个访问顺序LinkedHashMap 。 访问顺序LinkedHashMap维护从最近使用到最近使用的元素的访问顺序而不是插入顺序。 我们可以将Java LinkedHashMap分为两个主要类别 1.插入顺序 除非另有说明否则LinkedHashMap会维护其元素的插入顺序。 我们可以将其命名为插入顺序LinkedHashMap 。 让我们看一个例子 Test
public void insertionOrderLinkedHashMap() {LinkedHashMapInteger, String map new LinkedHashMap();map.put(1, A);map.put(2, B);map.put(3, C);assertEquals([1, 2, 3], map.keySet().toString());map.get(2); // accessing elementassertEquals([1, 2, 3], map.keySet().toString()); //still maintains insertion order}2.访问顺序 当我们使用构造函数 LinkedHashMapint initialCapacityfloat loadFactorboolean accessOrder并将真实值传递给accessOrder参数时我们将获得一个访问顺序LinkedHashMap 。 让我们看看访问顺序LinkedHashMap的实际工作原理 Test
public void accessOrderLinkedHashMap() {LinkedHashMapInteger, String map new LinkedHashMap(16, 0.75f, true);map.put(1, A);map.put(2, B);map.put(3, C);assertEquals([1, 2, 3], map.keySet().toString());map.get(2); // accessing elementassertEquals([1, 3, 2], map.keySet().toString());} 在使用键2作为元素访问元素时它移到了最后一个位置。 显然 根据从最近到最近的访问顺序对元素进行排序。 常用方法 让我们探索流行的方法 V putK键V值从HashMap类继承此方法。 它存储给定的键值对。 如果键已经存在则更新值 void replaceAllBiFunction super Ksuper Vextended V function用该条目上调用函数的结果替换每个条目的值直到所有条目都已处理或该函数引发异常 boolean containsKeyObject key检查给定键是否存在 boolean containsValueObject value如果至少有一个具有该值的键则返回true V getObject key根据键检索值 V getOrDefaultObject keyV defaultValue如果键存在则返回映射值否则返回默认值 void clear删除所有元素 Set Map.Entry KV entrySet返回给定地图中映射的Set视图 Set K keySet返回地图中包含的键的Set视图 Collection V values返回包含在映射中的值的Collection视图 forEachBiConsumer super Ksuper V action对给定映射中的每个条目执行给定操作直到处理完所有条目或引发异常 protected boolean removeEldestEntryMap.Entry K V eldest 如果地图应删除其最旧的条目则此方法将返回true 现在让我们尝试以下几种方法 MapInteger, String map new LinkedHashMap();map.put(1, A);
map.put(2, B);map.forEach((k, v) - System.out.println(k : v));System.out.println(map.size());System.out.println(map.containsKey(1));System.out.println(map.get(1));map.remove(1);for(Map.EntryInteger, String entry : map.entrySet()) {System.out.println(Key entry.getKey() , Value entry.getValue());
}结论 在这篇快速文章中我们研究了LinkedHashMap是什么以及如何实例化和使用它。 成为第一个发表评论的人。 翻译自: https://www.javacodegeeks.com/2019/05/linkedhashmap-java.html