Pet*_*aný 25 java iteration guava
我需要将Google Collection ImmutableMap和LinkedHashMap- 不可变映射与定义的迭代顺序组合在一起.似乎ImmutableMap本身实际上已经定义了迭代顺序,至少它的文档说:
基于散列的不可变Map,具有可靠的用户指定迭代顺序.
但是没有更多细节.快速测试表明这可能是真的,但我想确定.
我的问题是:我可以依赖ImmutableMap的迭代顺序吗?如果我这样做ImmutableMap.copyOf(linkedHashMap),它将具有与原始链接哈希映射相同的迭代顺序吗?构建器创建的不可变映射怎么样?一些权威答案的链接会有所帮助,因为谷歌没有找到任何有用的东西.(不,与来源的链接不计算在内).
Pet*_*aný 26
我实际上已经找到了关于这个问题的讨论,以及图书馆作者的答案:
Kevin Bourrillion:"用户指定"的意思是"它可以是你想要的任何顺序"; 换句话说,无论您首先向我们提供条目的顺序,这就是我们使用的顺序.
Jared Levy:您还可以复制具有所需顺序的TreeMap或LinkedHashMap.
是的,我应该相信javadoc,尽管我认为javadoc在这种情况下会更好.看来我不是第一个被它搞糊涂的人.如果没有别的,这个Q/A将帮助谷歌下次有人搜索"ImmutableMap迭代":-)
Jar*_*evy 21
更确切地说,ImmutableMap工厂方法和构建器返回实例,这些实例遵循构造中的映射时提供的输入的迭代顺序.但是,一个ImmutableSortedMap,它是ImmutableMap的子类.对键进行排序.
你应该相信javadoc.如果还不够,请阅读源代码或报告错误.
对源代码的快速浏览显示,映射由数组支持,迭代将通过也由数组支持的ImmutableSet完成.所以我认为文档是正确的,元素的顺序将保持不变.
| 归档时间: |
|
| 查看次数: |
11227 次 |
| 最近记录: |