我如何按照我创建它的相同顺序解析地图(foreach)(JAVA)

wea*_*ire 7 java sorting foreach map

所以我有一个地图,我按照我想要的顺序创建(插入数据).解析映射时,foreach中返回的第一个键不是我插入的第一个键.有没有办法实现这一目标?

排序我的地图有点棘手,因为它必须按值和值中的特定字段进行排序.泰

Dav*_*low 5

查看http://java.sun.com/j2se/1.4.2/docs/api/java/util/LinkedHashMap.html,了解具有可预测迭代顺序的Map实现.如果您实际上没有按键查找,也可以考虑使用List.


Ste*_*n C 4

让我们来看看。您的要求似乎是:

  1. 您有一组键/值对,其中键是唯一的。
  2. 您希望能够快速查找给定键的值。
  3. 您希望能够按插入顺序迭代键(或键对)。
  4. 您希望能够按照值类型的某些字段的顺序迭代值。

没有一个标准的 Java 集合类可以满足所有这些要求。而且我认为 Commons 集合或 Google 集合也不会......

如果您要放弃要求 3,那么 a TreeSet(用自定义实例化Comparator)就可以完成这项工作。如果你要放弃要求 4,那么 aLinkedHashMap就可以完成这项工作。

要满足所有要求,您需要执行以下操作之一:

  • 使用LinkedHashMap,当您想要根据提取映射集合的值以某种顺序进行迭代时values,使用自定义比较器对其进行排序,并返回已排序集合的迭代器。

  • 同时使用 aLinkedHashMap和 a TreeMap,并并行更新两者。

  • LinkedHashMap为 a和 a创建自定义外观类TreeMapput当您调用等时,这需要使两个数据结构保持最新remove,并且还提供额外的方法来获取排序值。