最近开发,需要map中输出的顺序与添加的顺序一致,所以总结一下HashMap、TreeMap、LinkedHashMap。
Map用于存储键值对,键不可重复,值可重复,键重复后值会被替换。
三种类型什么情况下使用?
-
一般情况下使用HashMap
-
TreeMap中的数据会按照键排序,如果需要按自然顺序或自定义顺序遍历键,可用TreeMap
-
LinkedHashMap输出值得顺序会和添加顺序一致
运行代码测试:
/**
* 测试map顺序
*/
public class TestMapSeq {
public static void main(String[] args) {
Map<String, Integer> hashMap = new HashMap<>();
Map<String, Integer> treeMap = new TreeMap<>();
Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
System.out.println("--------------test hashMap");
testMap(hashMap);
System.out.println("--------------test treeMap");
testMap(treeMap);
System.out.println("--------------test linkedHashMap");
testMap(linkedHashMap);
}
private static void testMap(Map<String, Integer> map) {
map.put("2",1);
map.put("3",2);
map.put("1",3);
map.put("4",4);
map.put("2",5);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
//entrySet():返回值为此映射中包含的映射关系的 Set 视图。 Map.Entry表示映射关系
//通过entrySet()方法将map集合中的映射关系取出(这个关系就是Map.Entry类型)
//个人理解,将map中的键值对存储为set
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}
结果:
可看到键重复后值被替换,HashMap无序,TreeMap按照键排序,LinkedHashMap和添加顺序一致