Google Collections ImmutableMap 迭代顺序

2022-09-01 13:56:41

我需要Google Collection和 - 不可变映射与定义的迭代顺序的组合。看起来ImmutableMap本身实际上已经定义了迭代顺序,至少它的文档说ImmutableMapLinkedHashMap

基于哈希的不可变映射,具有可靠的用户指定的迭代顺序。

但是没有更多细节。快速测试表明这可能是真的,但我想确保。

我的问题是:我可以依赖ImmutableMap的迭代顺序吗?如果我这样做,它会具有与原始链接哈希映射相同的迭代顺序吗?构建者创建的不可变地图呢?一些指向权威答案的链接会有所帮助,因为Google没有找到任何有用的东西。(不,指向来源的链接不计算在内)。ImmutableMap.copyOf(linkedHashMap)


答案 1

更准确地说,ImmutableMap 工厂方法和构建器返回的实例遵循构造映射时提供的输入的迭代顺序。但是,一个 ImmutableSortedMap,它是 ImmutableMap 的子类。对键进行排序。


答案 2

我实际上已经找到了关于这个问题的讨论,以及图书馆作者的答案

Kevin Bourrillion:我们所说的“用户指定”是指“它可以是你想要的任何顺序”;换句话说,无论您首先向我们提供条目的顺序是什么,这就是我们使用的顺序。

Jared Levy:你也可以复制具有所需顺序的TreeMap或LinkedHashMap。

是的,我应该相信javadoc,尽管我认为javadoc在这种情况下可以更好。似乎我不是第一个被它迷惑的人。如果没有别的,这个问答将帮助谷歌下次有人搜索“不可变的地图迭代”:-)