java - how to iterate through maps in order
本问题已经有最佳答案,请猛点这里访问。
这是代码:
1 2 3 |
这是正确的,但我注意到我得到的值是随机的,有没有一种方法可以使用特定的顺序循环通过地图?
编辑:
如果需要可预测的迭代顺序(插入顺序),请使用LinkedHashMap
如果希望对元素进行排序,则需要使用treemap,在这种情况下,键需要实现可比较的接口。
这是因为使用
[...] This class makes no guarantees as to the order of the map; in particular, it does not guarantee that the order will remain constant over time.
与此相反,您可以使用一些具体的实现,如:
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.
如果你不需要副本…
Hash table and linked list implementation of theMap interface, with predictable iteration order.
或者将映射实现更改为支持排序的实现之一,或者在对键进行迭代之前对它们进行排序。不过,我有点困惑,通常情况下,人们通过
1 2 3 4 5 | List keys = new ArrayList(mymap.keySet()) Collections.sort(keys) for ( String key : keys ) { [...] } |