LinkedHashMap
将按照条目放入映射的顺序进行迭代。
null
允许的值LinkedHashMap
.
该实现不是同步的并且使用双链接桶。
LinkedHashMap
非常类似于HashMap
,但它增加了对添加或访问项目的顺序的认识,因此迭代顺序与插入顺序相同,具体取决于构造参数。
LinkedHashMap
还为通过覆盖创建 Cache 对象提供了一个很好的起点removeEldestEntry()
方法。这使您可以创建一个 Cache 对象,该对象可以使用您定义的某些条件使数据过期。
基于链表和散列数据结构,具有链表(想想索引 SkipList)功能,以插入树中的方式存储数据。最适合实现 LRU(最近最少使用)。LinkedHashMap
延伸HashMap
.
它按照插入的顺序维护映射中条目的链接列表。这允许在地图上进行插入顺序迭代。也就是说,当迭代一个集合视图时LinkedHashMap
,元素将按照插入的顺序返回。此外,如果将钥匙再次插入LinkedHashMap
,保留原来的顺序。这允许在地图上进行插入顺序迭代。也就是说,当迭代一个LinkedHashMap
,元素将按照插入的顺序返回。您还可以创建一个LinkedHashMap
按上次访问的顺序返回其元素。
LinkedHashMap 构造函数
LinkedHashMap( )
此构造函数构造一个空的插入顺序 LinkedHashMap 实例,具有默认的初始容量 (16) 和负载因子 (0.75)。
LinkedHashMap(int capacity)
此构造函数构造一个具有指定初始容量的空 LinkedHashMap。
LinkedHashMap(int capacity, float fillRatio)
此构造函数构造一个具有指定初始容量和负载因子的空 LinkedHashMap。
LinkedHashMap(Map m)
此构造函数构造一个插入顺序的 Linked HashMap,其映射与指定的 Map 相同。
LinkedHashMap(int capacity, float fillRatio, boolean Order)
此构造函数构造一个空的 LinkedHashMap 实例,具有指定的初始容量、负载因子和排序模式。
LinkedHashMap支持的重要方法
Class clear( )
从地图中删除所有映射。
containsValue(object value )>
如果此映射将一个或多个键映射到指定值,则返回 true。
get(Object key)
返回指定键映射到的值,如果此映射不包含该键的映射,则返回 null。
removeEldestEntry(Map.Entry eldest)
下面是如何使用 LinkedHashMap 的示例:
Map<Integer, String> myLinkedHashMapObject = new LinkedHashMap<Integer, String>();
myLinkedHashMapObject.put(3, "car");
myLinkedHashMapObject.put(5, "bus");
myLinkedHashMapObject.put(7, "nano");
myLinkedHashMapObject.put(9, "innova");
System.out.println("Modification Before" + myLinkedHashMapObject);
System.out.println("Vehicle exists: " +myLinkedHashMapObject.containsKey(3));
System.out.println("vehicle innova Exists: "+myLinkedHashMapObject.containsValue("innova"));
System.out.println("Total number of vehicles: "+ myLinkedHashMapObject.size());
System.out.println("Removing vehicle 9: " + myLinkedHashMapObject.remove(9));
System.out.println("Removing vehicle 25 (does not exist): " + myLinkedHashMapObject.remove(25));
System.out.println("LinkedHashMap After modification" + myLinkedHashMapObject);