如何将 HashMap<K, V> 元素放入具有重复键的 TreeMap<V, K> 中?

How to put HashMap<K, V> elements inside a TreeMap<V, K> with duplicate keys?

我有一个包含重复键的 Hashmap,想以 Treemap 格式分配元素。我正在尝试下面的代码,但这不是在 Treemap 中插入重复的键。

HashMap<Integer,Integer> totalCustomersByPin = new HashMap<Integer,Integer>();
TreeMap<Integer,Integer> totalDeliveriesToPin = new TreeMap<Integer,Integer();
Iterator<Entry<Integer, Integer>> iterator = totalCustomersByPin.entrySet().iterator();
while(iterator.hasNext()) {
    Entry<Integer, Integer> pair = iterator.next();     
    totalDeliveriesToPin.put(pair.getValue(), pair.getKey());
}       
System.out.println("Top pincodes:" + totalDeliveriesToPin);

Java 本机地图不支持此功能。您可以使用来自 apache commons 的 MultiValuedMap

不过,我假设您想按键值的数量对其进行排序。您需要为此实现 Comparator,按集合中值的数量排序。 TreeMap 在这里无济于事。

TreeMap#public V put(K key, V value) 根据文档

将指定值与此映射中的指定键相关联。如果映射之前包含键的映射,则替换旧值。

要完成您正在寻找的事情,您需要一个 Multimap - 它本质上是一个列表的映射。

Map<Integer, List<String>> multiMap;

要添加一个对象,请获取该键的列表,如果它为空,请添加一个列表,然后将您的值添加到列表中,否则只需将您的值添加到现有列表中。