在Java中,是否有一个对象用作存储和访问键/值对的Map,但是可以返回一个有序的键列表和一个有序的值列表,这样键和值列表的顺序相同?
因此,作为代码解释,我正在寻找像我的虚构OrderedMap一样的东西:
OrderedMapom = new OrderedMap<>(); om.put(0, "Zero"); om.put(7, "Seven"); String o = om.get(7); // o is "Seven" List keys = om.getKeys(); List 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); }
dmeister.. 375
该SortedMap的接口(与实施TreeMap的)应该是你的朋友.
界面有以下方法:
keySet()
它以升序返回一组键
values()
它以相应键的升序返回所有值的集合
所以这个界面完全符合您的要求.但是,密钥必须具有有意义的顺序.否则,您可以使用LinkedHashMap,其中订单由插入顺序确定.
该SortedMap的接口(与实施TreeMap的)应该是你的朋友.
界面有以下方法:
keySet()
它以升序返回一组键
values()
它以相应键的升序返回所有值的集合
所以这个界面完全符合您的要求.但是,密钥必须具有有意义的顺序.否则,您可以使用LinkedHashMap,其中订单由插入顺序确定.
是否存在一个像Map一样的对象来存储和访问键/值对,但是可以返回一个有序的键列表和一个有序的值列表,这样键和值列表的顺序相同?
您正在寻找java.util.LinkedHashMap.您将获得Map.Entry Comparator
.
LinkedHashMap维护键的顺序.
java.util.LinkedHashMap似乎就像普通的HashMap一样工作.
我认为你从框架中得到的最接近的集合是SortedMap
您可以利用可以按升序或降序键访问和遍历的NavigableMap接口。该接口旨在取代 SortedMap接口。通常,可导航地图是根据其键的自然顺序或在地图创建时提供的比较器进行排序的。
它有三个最有用的实现:TreeMap,ImmutableSortedMap和ConcurrentSkipListMap。
TreeMap示例:
TreeMapusers = new TreeMap (); 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)