map输入与输出顺序不一致

HashMap是一个最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的,这样会导致按照顺序读取的时候和存入的顺序是不一样的。HashMap最多只允许一条记录的键为Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用 Collections的synchronizedMap方法使HashMap具有同步的能力,或者使用ConcurrentHashMap。
LinkedHashMap是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的。也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。
有过要按照顺序来取数据,有三种方法。
第一:
通过有序的 Key 获取相对应的数据。
第二:
用HashMap的子类LinkedHashMap可以按照我们的put顺序进行存储map数据

Map<String,String> map = new Map<>();
第三:用TreeMap

HashMap是一个散列表,它存储的内容是键值对(key-value)映射。
HashMap实现了Map接口,根据键的HashCode值存储数据,具有很快的访问速度,最多允许一条记录的键为null,不支持线程同步。
HashMap是无序的,即不会记录插入的顺序。
HashMap继承于AbstractHashMap,实现了Map、Cloneable、java.io.Serializeable接口。

原文链接:https://blog.csdn.net/qq_56619322/article/details/126689809

本次采用HashMap的子类LinkedHashMap按照我们的put顺序输出map中的数据

Map<String,String> map=new LinkedHashMap<>();
map.put("11","来了");
map.put("22","都得");
for (String l:map.keySet()){
}

 

posted @ 2022-10-20 09:54  锦瑟流年3344  阅读(659)  评论(0编辑  收藏  举报