LinkedHashMap 将按照条目放入映射的顺序进行迭代。
null 允许在LinkedHashMap 中使用值。
实现不同步,使用双链桶。
LinkedHashMap 与HashMap 非常相似,但它增加了对添加或访问项的顺序的感知,因此迭代顺序与插入顺序相同,具体取决于构造参数。
LinkedHashMap 还为通过覆盖removeEldestEntry() 方法创建缓存对象提供了一个很好的起点。这使您可以创建一个 Cache 对象,该对象可以使用您定义的某些条件使数据过期。
基于链表和散列数据结构,具有链表(想想 indexed-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);