Groovy 中的地图是否保持秩序?

inf*_*ous 3 groovy data-structures

Groovy 中的地图是否保持提供数据的顺序?即,当迭代键时,顺序会始终保留吗?

farms = [Idaho: ["Duck", "Dog"], Ohio: ["Chicken", "Duck"], "New Mexico": ["Dog", "Cow"]]

chr*_*her 5

是的。当您在 groovy 中使用映射文字语法时,它会创建一个 a 实例LinkedHashMap,它将维持顺序。这可以在这个 ideone中看到。

只是一个注释

根据我的经验(请注意,并非总是如此),如果您需要维护 a 的顺序,Map那么您可能没有以正确的方式使用它。需要这种类型地图的实际用例并不多。

  • Groovy 语法中有一个普遍的哲学,即它“正常工作”。您想从地图中获取值吗?`map.get('myValue')`、`map['myValue']` 和 `map.myValue` 均有效。想要获取子串吗?`myStr[5..10]` 有效。该语言充满了糖分,这使得它变得沉重,但也是一种非常棒的开发语言。这只是出色的开发人员让您的生活变得更轻松的另一种方式。使用“LinkedHashMap”只会产生最小的性能影响,这只是映射文字可以做的另一件事。 (2认同)