8.6.3 LinkedHashMap实现类
8.6.3 LinkedHashMap实现类
HashSet有一个LinkedHashSet子类, HashMap也有一个LinkedHashMap子类;
LinkedHashMap数据结构 双向链表
LinkedHashMap也使用双向链表来维护key-value对的次序(其实只需要考虑key的次序),该链表负责维护Map的迭代顺序。
LinkedHashMap有序
LinkedHashMap的迭代顺序与key-value对的插入顺序保持一致。
LinkedHashMap可以避免对HashMap、 Hashtable里的key-value对进行排序(只要插入key-value对时保持顺序即可),同时又可避免使用TreeMap所增加的成本。LinkedHashMap需要维护元素的插入顺序,因此性能略低于HashMap的性能;但因为它以链表来维护内部顺序,所以在迭代访问Map里的全部元素时将有较好的性能。
程序 LinkedHashMap示例
下面程序示范了LinkedHashMap的功能:迭代输出LinkedHashMap的元素时,输出的顺序与添加key-value对的顺序一致。
1 | import java.util.*; |
运行结果:
1 | 语文-->80 |
上面程序中最后一行代码使用Java 8为Map新增的forEach()方法来遍历Map集合。编译、运行上面程序,即可看到LinkedHashMap的功能: LinkedHashMap可以记住key-value对的添加顺序。