这是代码:
for(String key : mymap.stringPropertyNames()) {
//mycode
}
这可以正常工作,但我注意到我以随机顺序得到了我需要的值,是否有办法使用特定的顺序遍历地图?
编辑:Mymap
是properties
个对象。
答案 0 :(得分:4)
如果您想要可预测的迭代顺序(插入顺序),请使用LinkedHashMap
如果您希望对元素进行排序,则需要使用TreeMap,在这种情况下,Keys需要实现Comparable接口
答案 1 :(得分:3)
这是因为您使用Map
而未按HashMap
[...] 此课程不保证地图的顺序; 特别是,它不能保证订单会随着时间的推移保持不变
而不是这样,您可以使用一些具体的实现,如:
地图根据其键的自然顺序或地图创建时提供的比较器进行排序,具体取决于使用的构造函数。
LinkedHashMap
如果您需要无重复 ...
Hash
表和Map
接口的链表实现,具有可预测的迭代顺序。
答案 2 :(得分:0)
将Map实现更改为支持对键进行排序或排序的实现之一,然后再迭代它们。我有点困惑,通常用keySet
方法获取地图的键。我不熟悉stringPropertyNames
但是如果它是Map,你应该可以做类似的事情:(未经测试的代码):
List keys = new ArrayList(mymap.keySet())
Collections.sort(keys)
for ( String key : keys ) {
[...]
}