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
对的添加顺序。