如果我有一个散列映射并重复遍历对象,我不能保证每次调用的顺序相同是否正确?例如,以下是否可以打印两行彼此不同的行:
Map<String,Integer> map = new HashMap<String,Integer>()
{{ put("a", 1); put("b", 2); put("c", 3); }};
System.out.println(map);
System.out.println(map);
集合和集合一般都是这种情况吗?如果是这样,最好的方法是什么,以防您必须以相同的顺序(无论是什么顺序)在同一个集合上迭代两次?我想转换成列表。
最佳答案
Map
和 Set
的契约不对迭代顺序做任何保证,但是 SortedSet
和 SortedMap
(由 TreeMap
和 TreeSet
实现)。
此外,即使是未排序的实现通常也具有确定性,并且每个特定实例都有可重复的迭代顺序,只要它没有以任何方式修改。但是,这是一个实现细节,不应依赖。
关于java - 调用之间的 map /收集顺序是否稳定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2953905/