0%

8.6.3 LinkedHashMap实现类

8.6.3 LinkedHashMap实现类

HashSet有一个LinkedHashSet子类, HashMap也有一个LinkedHashMap子类; LinkedHashMap也使用双向链表来维护key-value对的次序(其实只需要考虑key的次序),该链表负责维护Map的迭代顺序,LinkedHashMap的迭代顺序与key-value对的插入顺序保持一致
LinkedMap可以避免对HashMapHashtable里的key-value对进行排序(只要插入key-value对时保持顺序即可),同时又可避免使用TreeMap所增加的成本。
LinkedMap需要维护元素的插入顺序,因此性能略低于HashMap的性能;但因为它以链表来维护内部顺序,所以在迭代访问Map里的全部元素时将有较好的性能。下面程序示范了LinkedHashMap的功能:迭代输出LinkedHashMap的元素时,输出的顺序与添加key-value对的顺序一致

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import java.util.*;

public class LinkedHashMapTest
{
public static void main(String[] args)
{
LinkedHashMap scores = new LinkedHashMap();
scores.put("语文" , 80);
scores.put("英文" , 82);
scores.put("数学" , 76);
// 调用forEach方法遍历scores里的所有key-value对
scores.forEach((key, value) -> System.out.println(key + "-->" + value));
}
}

运行结果:

1
2
3
语文-->80
英文-->82
数学-->76

上面程序中最后一行代码使用Java 8Map新增的forEach()方法来遍历Map集合。编译、运行上面程序,即可看到LinkedHashMap的功能: LinkedHashMap可以记住key-value对的添加顺序

重点

LinkedHashMap可以记住key-value对的添加顺序

原文链接: 8.6.3 LinkedHashMap实现类