为了账号安全,请及时绑定邮箱和手机立即绑定

Java订购地图

Java订购地图

慕运维8079593 2019-11-22 15:57:57
在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);}
查看完整描述

3 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

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


您正在寻找java.util.LinkedHashMap。您将获得Map.Entry <K,V>对的列表,该对始终以相同的顺序进行迭代。该顺序与放置项目的顺序相同。或者,使用java.util.SortedMap,其中键必须具有自然顺序或由来指定Comparator。


查看完整回答
反对 回复 2019-11-22
?
郎朗坤

TA贡献1921条经验 获得超9个赞

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


它有三个最有用的实现:TreeMap,ImmutableSortedMap和ConcurrentSkipListMap。


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)


查看完整回答
反对 回复 2019-11-22
  • 3 回答
  • 0 关注
  • 448 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信