如何使用自然的entrySet()顺序迭代HashMap?

发布于 2024-11-29 09:15:57 字数 87 浏览 0 评论 0原文

我的地图包含按字母顺序排序的键。当我显示它时,我使用的是entrySet().iterator(),但我的结果不是按字母顺序排列的。 我如何才能按顺序获得结果?

My Map contains keys sorted in alphabetical order. When I display it, I'm using entrySet().iterator(), but my results are not in the alphabetical order.
How can I get my results in order?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

夜声 2024-12-06 09:15:57

不,您的地图不按字母顺序保存元素。您可能会按该顺序使用 .put(..),但映射没有定义的迭代顺序。

其他人建议使用 SortedSet,但您也可以使用 <代码>LinkedHashMap。它保证迭代顺序:

此实现(LinkedHashMap)使其客户端免受 HashMap(和 Hashtable)提供的未指定的、通常混乱的排序的影响,而不会增加与 TreeMap 相关的成本

No, your map does not hold elements in alphabetical order. You may have .put(..) then in that order, but the map does not have a defined iteration order.

Others suggest using SortedSet, but you can also use LinkedHashMap. It guarantees iteration order:

This implementation (LinkedHashMap) spares its clients from the unspecified, generally chaotic ordering provided by HashMap (and Hashtable), without incurring the increased cost associated with TreeMap

我的鱼塘能养鲲 2024-12-06 09:15:57

使用 TreeMap

基于红黑树NavigableMap 实现。该地图根据自然顺序 其键,或通过 Comparator 在地图创建时提供,具体取决于使用哪个构造函数...

Use TreeMap:

A Red-Black tree based NavigableMap implementation. The map is sorted according to the natural ordering of its keys, or by a Comparator provided at map creation time, depending on which constructor is used...

红玫瑰 2024-12-06 09:15:57

对于 2020 年及以后发现此问题的任何人...
现在我们有了流,您可以执行以下操作:

map.entrySet()
  .stream()
  .sorted(Map.Entry.comparingByKey())
  .forEach(System.out::println);

For anyone finding this question in 2020 and beyond...
Now that we have streams, you can do something like this:

map.entrySet()
  .stream()
  .sorted(Map.Entry.comparingByKey())
  .forEach(System.out::println);
你的心境我的脸 2024-12-06 09:15:57

我的地图包含按字母顺序排序的键

这是不正确的。

使用 http://download.oracle.com/javase/ 6/docs/api/java/util/SortedMap.html 或在迭代之前对键进行排序

My Map contains keys sorted in alphabetical order

This is not true.

Use http://download.oracle.com/javase/6/docs/api/java/util/SortedMap.html or sort your keys before iterate

数理化全能战士 2024-12-06 09:15:57

由于 HashMap 使用散列将条目存储在底层容器中,因此无法保证任何特定的顺序。如果您希望 HashMap 中的条目有序,您必须自己对它们进行排序。

另一方面,TreeMap 将维护某种顺序(您可以通过实现 Comparable 接口自行决定),因此,如果您获取其条目集,它就会出现按字母顺序给你。 String 已经实现了 Comparable,因此它们将按字母顺序返回给您。

Since HashMap uses hashing to store the entries in an underlying container, you aren't guaranteed any specific order. If you want your entries from your HashMap ordered, you must sort them yourself.

A TreeMap on the other hand will maintain some sort of order (you can dictate that yourself by implementing the Comparable interface), so if you get its entry set, it will come to you alphabetically. String already implements Comparable, so they will be returned to you in alphabetical order.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文