从Linked hashMap派生时数组的顺序是什么?

时间:2017-04-09 12:45:03

标签: java arrays linkedhashmap

我创建了一个链接的哈希映射,然后使用该映射生成了Map键数组,如下所示: -

Map<String, String> map = new LinkedHashMap<>();
map.put("Str1", "Str1");
map.put("Str1", "Str1");

String[] keyArray= map.keySet().stream.toArray(String[]::new);

现在,问题是keyArray的顺序是什么? 它是否与链接hashmap的inserrtion顺序相同或不同? 如果它不同,那么我们如何生成一个具有相同插入顺序的数组,这个数组是Linkedhashmap的?

1 个答案:

答案 0 :(得分:1)

来自java.util.stream docs

  

Streams可能有也可能没有已定义的遭遇顺序。流是否具有遭遇顺序取决于源和中间操作。某些流源(例如List或数组)本质上是有序的,而其他流(例如HashSet)则不是。某些中间操作(例如sorted())可能会在其他无序流上强制执行遭遇顺序,而其他中间操作可能会呈现无序的有序流,例如BaseStream.unordered()。

来自LinkedHashMap docs

  

此链接列表定义迭代排序,通常是键插入映射的顺序(插入顺序)

由于LinkedHashMap被用作源并且它维护一个排序,因此可以期望得到的数组具有与其源相同的顺序。