3

我想知道是否有具有这些属性的集合:

  1. 核心价值
  2. 允许重复值
  3. 能够按价值排序并同时保存重复价值。

例如:没有订购

(1,2)
(2,1)
(3,1)
(4,2)

订购

(2,1)
(3,1)
(1,2)
(4,2)

我尝试treeMap 使用比较器,但它删除了重复值

@Override
    public int compare(Object o1, Object o2) {
        Comparable valueA = (Comparable) map.get(o1);
        Comparable valueB = (Comparable) map.get(o2);

        int res = 0;
        if (valueA.compareTo(valueB) < 0) {
            res = 1;
        } else if (valueA.compareTo(valueB) > 0) {
            res = -1;
        } else {
            res = 0;
        }
        return res;
    }
4

2 回答 2

3

您可以使用 GuavaTreeMultimap创建有序的多图。这会对同一 key中的值进行排序,但如果您需要按值排序迭代,那么您能做的最好的事情就是交换键和值(并放弃通过键查找的能力)。

于 2013-10-25T19:08:21.557 回答
1

Just read again what do you want to get it!

You want ordered values.

(2,1)
(3,1)
(1,2)
(4,2)

When, in what cases do you want? I believe you need to switch the key and value and take an ordered key collection.

with duplicates I would use a collection. Something like this:

1 - > (2,3)

2 - > (1,4)

Something like:

LinkedHashSet<Integer,  ArrayList<Integer>>
于 2013-10-25T19:16:21.587 回答