用相同的键订购地图

  • 本文关键字:地图 java dictionary
  • 更新时间 :
  • 英文 :


我想创建一个向String的映射Integer,此地图订购了我的键。所以我使用:

TreeMap<Integer, String> thm = new TreeMap<Integer, String>();
thm.put(100, "String 1");
thm.put(11, "String 2");
thm.put(100, "String 3");

问题是当我有两个相同的键时,我的TreeMap只包含一个!如何创建一个TreeMap来填充两个相同的Kays?如果TreeMap无法解决我的问题,我该怎么办?

我读到您的答复是Guava Tree multi-map,但Multimap不订购我的密钥

您可能需要将番石榴树多图用于此目的。如果存在新密钥,则MAP覆盖现有密钥。

示例:

   Multimap<String, String> myMultimap = TreeMultimap.create();      
  // Adding some key/value
  myMultimap.put("Fruits", "Bannana");
  myMultimap.put("Fruits", "Apple");
  myMultimap.put("Fruits", "Pear");
  myMultimap.put("Vegetables", "Carrot")

这是有关如何使用mutli-map的教程。

如果您每个键需要多个值,请查看guava multimap。

类似于地图的集合,但可能会关联多个值 用一个键。如果您两次致电(k,v),则使用相同的密钥,但是 不同的值,多映射包含从密钥到两者的映射 值。

特别是(以满足您的排序要求)实现TreemultImap将订购密钥和值。从文档:

实施多件事的键和值由其命令。 自然订购或通过提供的比较器。

当您使用treemap时,我想您对键上的自然分类感兴趣。

如果是这样,最简单的解决方案似乎使用 TreeMap<Integer, List<String>>,在添加时创建ArrayList<String>,没有任何内容,则无需将项目添加到列表中

java.util.map 实现类不允许重复键。有关 guava Multimap 的替代信息。

map.put("key1", "val1");
 map.put("key1", "val2");

,很容易处理从键到多个值的映射Google guava libray Multimap,它映射到值为值,类似于映射,但是每个键可以与多个值关联。MultiMap的实现是ArrayListMultImap,HashMultImap,SetMultimap等。

Multimap<Integer, String> thm = TreeMultimap.create();
thm.put(100, "key 1");
thm.put(11, "key 2");
thm.put(100, "key 3");

而不必依靠外部库,您可以创建

`Map<Integer,List<String>> thm= new TreeMap<Integer,List<String>>();`

要添加您必须做

  thm.get

如果它返回null,则在一个元素上放置一个新的arraylist,如果它返回一个arraylist,您只需附加到它

最新更新