java - 如何按顺序遍历地图

时间:2016-06-15 08:23:31

标签: java maps

这是代码:

for(String key : mymap.stringPropertyNames()) {
//mycode
}

这可以正常工作,但我注意到我以随机顺序得到了我需要的值,是否有办法使用特定的顺序遍历地图?

编辑:Mymapproperties个对象。

3 个答案:

答案 0 :(得分:4)

如果您想要可预测的迭代顺序(插入顺序),请使用LinkedHashMap

如果您希望对元素进行排序,则需要使用TreeMap,在这种情况下,Keys需要实现Comparable接口

答案 1 :(得分:3)

这是因为您使用Map而未按HashMap

排序
  

[...] 此课程不保证地图的顺序; 特别是,它不能保证订单会随着时间的推移保持不变

而不是这样,您可以使用一些具体的实现,如:

TreeMap

  

地图根据其键的自然顺序或地图创建时提供的比较器进行排序,具体取决于使用的构造函数。

LinkedHashMap如果您需要无重复 ...

  

Hash表和Map接口的链表实现,具有可预测的迭代顺序。

答案 2 :(得分:0)

将Map实现更改为支持对键进行排序或排序的实现之一,然后再迭代它们。我有点困惑,通常用keySet方法获取地图的键。我不熟悉stringPropertyNames但是如果它是Map,你应该可以做类似的事情:(未经测试的代码):

List keys = new ArrayList(mymap.keySet())
Collections.sort(keys)
for ( String key : keys ) {
    [...]
}