java-如何按顺序遍历映射

java-如何按顺序遍历映射,java,maps,Java,Maps,代码如下: for(String key : mymap.stringPropertyNames()) { //mycode } 这是正确的,但我注意到我以随机顺序获得了所需的值,有没有一种方法可以使用特定的顺序在地图中循环 编辑:Mymap是一个properties对象 这是因为您使用的是映射,而没有排序 […]此类不保证映射的顺序特别是,它不能保证顺序随时间保持不变 相反,您可以使用一些具体的实现,如: : 映射根据其键的自然顺序进行排序,或者由映射创建时提供的比较器进行排序,具体取决于

代码如下:

for(String key : mymap.stringPropertyNames()) {
//mycode
}
这是正确的,但我注意到我以随机顺序获得了所需的值,有没有一种方法可以使用特定的顺序在地图中循环


编辑:
Mymap
是一个
properties
对象

这是因为您使用的是
映射
,而没有排序

[…]此类不保证映射的顺序特别是,它不能保证顺序随时间保持不变


相反,您可以使用一些具体的实现,如:

:

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

如果你不需要复制品

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


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


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

将映射实现更改为支持排序的实现之一,或者在迭代键之前对键进行排序。不过我有点困惑,通常人们通过
keySet
方法获取地图的键。我不熟悉
stringPropertyNames
,但如果它是一个映射,您应该能够执行以下操作(未测试的代码):


这取决于
mymap
是什么。@Ciurga,你在用哪个地图?您需要使用TreeMap,以便根据某些逻辑顺序存储和迭代内容MyMap实际上是一个properties对象是否需要一个尊重元素最初插入顺序的
Map
,例如
LinkedHashMap
,或者您想要一个
映射
,它按照特定的顺序对键进行排序,例如
树映射
?对。看来你已经找到答案了。我建议您点击勾号,将其中一个答案标记为已接受?这样,每个人都知道你不需要更多的信息。好的,谢谢,我来换房间code@Ciurga如果你需要将它们按顺序排列,而不需要按密钥访问它们,则考虑使用列表。@ Ciurga,这是你的第一个问题,你必须知道,如果这个或任何答案已经解决了你的问题,请通过点击复选标记来考虑。这向更广泛的社区表明,你已经找到了一个解决方案,并给回答者和你自己带来了一些声誉。没有义务这样做。
List keys = new ArrayList(mymap.keySet())
Collections.sort(keys)
for ( String key : keys ) {
    [...]
}