Java 有序映射

新手上路,请多包涵

Java中是否有一个对象像Map一样用于存储和访问键/值对,但可以返回一个有序的键列表和一个有序的值列表,使得键和值列表的顺序相同?

因此,作为代码解释,我正在寻找行为类似于我虚构的 OrderedMap 的东西:

 OrderedMap<Integer, String> om = new OrderedMap<>();
om.put(0, "Zero");
om.put(7, "Seven");

String o = om.get(7); // o is "Seven"
List<Integer> keys = om.getKeys();
List<String> values = om.getValues();

for(int i = 0; i < keys.size(); i++)
{
    Integer key = keys.get(i);
    String value = values.get(i);
    Assert(om.get(key) == value);
}

原文由 Whatsit 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 674
2 个回答

SortedMap 接口(带有 TreeMap 的实现)应该是你的朋友。

该接口具有以下方法:

  • keySet() 按升序返回一组键
  • values() 返回所有值按对应键升序排列的集合

所以这个接口完全满足你的要求。但是,键必须具有有意义的顺序。否则,您可以使用 LinkedHashMap ,其中顺序由插入顺序决定。

原文由 dmeister 发布,翻译遵循 CC BY-SA 3.0 许可协议

是否有一个对象像 Map 一样用于存储和访问键/值对,但可以返回一个有序的键列表和一个有序的值列表,使得键和值列表的顺序相同?

您正在寻找 java.util.LinkedHashMap 。您将获得 Map.Entry 对的列表,它们总是以相同的顺序迭代。该顺序与您放入项目的顺序相同。或者,使用 java.util.SortedMap ,其中键必须具有 自然顺序 或由 Comparator 指定。

原文由 John Feminella 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题