参见下方 package JavaCollectionClass; import java.util.LinkedHashMap; public class LinkedHashMapAndSet { public static void main(String[] args) { //linkedHashmap会记住元素插入的顺序,Hashmap是随机插入的进散列表的. //LinkedHashMap<String,Integer> stringIntegerLinkedHashMap = new LinkedHashMap<>(16,0.75F,true),调用访问顺序去遍历散列表中的元素 //LinkedHashMap中使用双向链表实现访问顺序,当get或put的元素,会被加入到链表的尾部,链表的特点是插入删除快,访问查找慢,但是这不包括链表的头尾两个元素,链表头尾两个元素的查找时间复杂度都是O(1) //所以,被加入到链表尾部的元素都是访问频率高的元素。可以以此去实现访问顺序遍历元素。并且LinkedHashmap的元素依然会在HashTable中,保留了哈希算法的查询高效率的特点,且通过结合双向链表实现了插入顺序和访问顺序。 LinkedHashMap<String,Integer> stringIntegerLinkedHashMap = new LinkedHashMap<>(16,0.75F,true); stringIntegerLinkedHashMap.put("1",1); stringIntegerLinkedHashMap.put("2",2); stringIntegerLinkedHashMap.put("5",5); stringIntegerLinkedHashMap.put("3",3); stringIntegerLinkedHashMap.put("4",4); stringIntegerLinkedHashMap.forEach((k,v)-> System.out.println("k:"+k+" "+"v:"+v)); System.out.println("-------------"); System.out.println(stringIntegerLinkedHashMap.get("1")); System.out.println(stringIntegerLinkedHashMap.get("1")); System.out.println(stringIntegerLinkedHashMap.get("1")); System.out.println("-------------"); stringIntegerLinkedHashMap.forEach((k,v)-> System.out.println("k:"+k+" "+"v:"+v)); } }