帮助我了解插入顺序在这里的工作方式。
HashMap<Integer, String> hashMap = new HashMap<>();
hashMap.put(1, "Amrendra");
hashMap.put(10, "Joe");
hashMap.put(2, "Aakash");
System.out.println(hashMap);
LinkedHashMap<Integer, String> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put(1, "Amrendra");
linkedHashMap.put(10, "Joe");
linkedHashMap.put(2, "Aakash");
System.out.println(linkedHashMap);
HashMap
不会保持插入顺序,在使用时iterator
您会观察到,同时LinkedHashMap
在迭代时需要额外的内存来维持插入顺序。LinkedHashMap
使用DoublyLinkedList
保留顺序,您还可以选择使用LinkedHashMap
构造函数之一保留访问顺序(或)插入顺序。
访问顺序是最近最少使用的。另一方面,插入顺序类似于FIFO
。
更新
HashMap<Integer, String> hashMap = new HashMap<>();
hashMap.put(1, "Amrendra");
hashMap.put(10, "Joe");
hashMap.put(2, "Aakash");
hashMap.put(5, "Android");
System.out.println("HashMap: "+hashMap);
hashMap = new LinkedHashMap<>();
hashMap.put(1, "Amrendra");
hashMap.put(10, "Joe");
hashMap.put(2, "Aakash");
hashMap.put(5, "Android");
System.out.println("LinkedHashMap: " + hashMap);
通过输出,您可以清楚地描述in中HashMap
,Joe
已在之前插入Akash
,但是在检索时,您获得了Akash
before Joe
,其中LinkedHashMap
插入顺序保持原样。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句