是否保证从LinkedHashMap对象返回键和值的顺序?

2022-08-31 06:36:59

我知道有一个可预测的迭代顺序(插入顺序)。返回者和返回者是否也保持此顺序?LinkedHashMapSetLinkedHashMap.keySet()CollectionLinkedHashMap.values()


答案 1

Map 接口提供了三个集合视图,允许将映射的内容作为一组键、值集合或一组键值映射进行查看。地图的顺序定义为地图集合视图上的迭代器返回其元素的顺序。一些映射实现,如类,对其顺序做出特定的保证;其他人,像班级一样,没有。TreeMapHashMap

-- 地图

此链表定义迭代顺序,这通常是将键插入到映射中的顺序(插入顺序)。

-- LinkedHashMap

因此,yes、、 和(提到的三个集合视图)按内部链接列表使用的顺序返回值。是的,JavaDoc保证了它。keySet()values()entrySet()MapLinkedHashMap

毕竟,这就是这门课的重点。


答案 2

看看源头,它看起来确实如此。、和 所有 在内部都使用相同的条目迭代器。keySet()values()entrySet()