java entry的用法_关于java:如何使用自然的entrySet()顺序迭代HashMap?

我的地图包含按字母顺序排序的键。 当我显示它时,我正在使用entrySet()。iterator(),但我的结果不是按字母顺序排列。

如何才能按顺序获得结果?

不,您的地图不按字母顺序保存元素。您可能按此顺序拥有.put(..),但地图没有定义的迭代顺序。

其他人建议使用SortedSet,但你也可以使用LinkedHashMap。它保证了迭代顺序:

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

LinkedHashMap是我需要的,保持我将项目插入地图的顺序。 谢谢你的提示!

使用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...

谢谢Kan,只需简单地用TreeMap替换我的HashMap,就可以了。 非常感谢

您可以使用ConcurrentSkipListMap或TreeMap。

由于HashMap使用散列来存储基础容器中的条目,因此无法保证任何特定顺序。如果您希望订购HashMap的条目,则必须自己对其进行排序。

另一方面,TreeMap将保持某种顺序(您可以通过实现Comparable接口来指示自己),因此如果您获得其条目集,它将按字母顺序出现。 String已经实现Comparable,因此它们将按字母顺序返回给您。

My Map contains keys sorted in alphabetical order

这不是真的。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值