首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >谷歌集合ImmutableMap迭代顺序

谷歌集合ImmutableMap迭代顺序
EN

Stack Overflow用户
提问于 2010-09-28 15:56:25
回答 3查看 14K关注 0票数 27

我需要谷歌集合ImmutableMapLinkedHashMap的组合-定义迭代顺序不可变的地图。看起来ImmutableMap本身实际上已经定义了迭代顺序,至少是its documentation says

一个不可变的,基于散列的映射,具有可靠的用户指定的迭代顺序。

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

我的问题是:我可以依赖ImmutableMap的迭代顺序吗?如果我使用ImmutableMap.copyOf(linkedHashMap),它的迭代顺序是否与原始链接的哈希图相同?那么由builder创建的不可变映射呢?一些权威答案的链接会有所帮助,因为谷歌没有找到任何有用的东西。(不,到源代码的链接不算数)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-10-01 20:56:48

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

票数 28
EN

Stack Overflow用户

发布于 2010-09-28 16:09:30

实际上,我已经找到了关于这个的讨论,与answers from library authors

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

Jared Levy:您还可以复制具有所需订单的TreeMap或LinkedHashMap。

是的,我应该相信javadoc,尽管我认为javadoc在这种情况下会更好。似乎我不是第一个被它弄糊涂的人。如果没有其他问题,这个问答将帮助谷歌下次有人搜索"ImmutableMap iteration“:-)

票数 28
EN

Stack Overflow用户

发布于 2010-09-28 16:06:33

你应该相信javadoc。如果还不够,请阅读源代码或报告错误。

快速浏览源代码会发现,映射是由数组支持的,迭代将通过也由数组支持的ImmutableSet完成。因此,我认为文档是正确的,元素的顺序将保持不变。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3810738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档