java - 调用之间的 map /收集顺序是否稳定?

标签 java collections iteration

如果我有一个散列映射并重复遍历对象,我不能保证每次调用的顺序相同是否正确?例如,以下是否可以打印两行彼此不同的行:

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);

集合和集合一般都是这种情况吗?如果是这样,最好的方法是什么,以防您必须以相同的顺序(无论是什么顺序)在同一个集合上迭代两次?我想转换成列表。

最佳答案

MapSet 的契约不对迭代顺序做任何保证,但是 SortedSetSortedMap(由 TreeMapTreeSet 实现)。

此外,即使是未排序的实现通常也具有确定性,并且每个特定实例都有可重复的迭代顺序,只要它没有以任何方式修改。但是,这是一个实现细节,不应依赖。

关于java - 调用之间的 map /收集顺序是否稳定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2953905/

相关文章:

java - 类必须声明为抽象或实现抽象方法错误

java - ArrayList<JSONObject> 与 JSONArray

java - 在 Java 中迭代 TreeSet 比迭代 HashSet 慢吗?

android - 迭代导致 Number Picker Listener 崩溃

java - 如何在java中对具有多个数据排序的对象列表进行排序

javascript - 如何使用 for 或 while 循环迭代到 100 并使用 javascript 显示每次迭代的总和?

java - Matlab无法启动,错误: "Cannot locate com/mathworks/jmi/OpaqueJavaInterface class"

java - Elasticsearch : How to get score for each word matched in a match query

java - 从 View 中禁用全局工具栏中的操作

JavaScript |对象 : Get Property Ninja Move