如何解决遍历地图时如何确定顺序
public class MapEntrySetorder {
public static void main(String[] args) {
Map<String,String> map = new HashMap<>();
String[] l = new String[]{"Entry","Set","HashMap","Order"};
for (String s : l) {
map.putIfAbsent(s,s);
}
for(Map.Entry<String,String> e : map.entrySet()) {
System.out.println("key:" + e.getKey());
}
}
}
我知道 hashmap 中没有维护顺序,但是每次我通过循环打印键时,都是按相同顺序排列的,并且顺序既不是从原始列表的开头也不是从原始列表的末尾列表:
key:Order
key:Entry
key:Set
key:HashMap
那么顺序是如何决定的。如果是随机的,为什么每次打印出来的结果都是一样的?
解决方法
使用 HashMap 实现快速无序 Map
使用 LinkedHashMap 作为添加到 Map 的顺序
将 TreeMap 用于您希望的任何顺序(使用 Comparator 实现)
此外,我认为您每次都有相同的顺序,因为您使用 map.entrySet()
而不是 map.keySet()
Hashmap
不保证任何顺序。
如果您想要有序序列,请改用 LinkedHashMap。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。