java java有序list java有序map - Java有序地图




4 Answers

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

界面有以下方法:

  • keySet() ,它以升序返回一组键
  • values()以相应键的升序返回所有值的集合

所以这个界面完全符合你的要求。 但是,密钥必须具有有意义的顺序。 否则,您可以使用LinkedHashMap ,其顺序由插入顺序决定。

map排序 list有序么

在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);
}



LinkedHashMap维护键的顺序。

java.util.LinkedHashMap看起来像正常的HashMap一样工作。







您可以利用可以按升序或降序键盘顺序访问和遍历的NavigableMap接口。 此接口旨在取代 SortedMap接口。 可导航地图通常按照其按键的自然排序或在地图创建时提供的比较器进行排序。

它有三个最有用的实现: TreeMapImmutableSortedMapConcurrentSkipListMap

TreeMap示例:

TreeMap<String, Integer> users = new TreeMap<String, Integer>();
users.put("Bob", 1);
users.put("Alice", 2);
users.put("John", 3);

for (String key: users.keySet()) {
  System.out.println(key + " (ID = "+ users.get(key) + ")");
}

输出:

Alice (ID = 2)
Bob (ID = 1)
John (ID = 3)



Related