具有重复值的有序集合(键,值)

时间:2013-10-25 19:05:29

标签: java collections

我想知道是否有一个包含这些属性的集合:

  1. 键,值
  2. 允许重复值
  3. 按价值排序并同时保存重复值的能力。
  4. 例如:   没有订购

    (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;
        }
    

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

再读一遍你想得到什么!

您需要有序的值。

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

在什么情况下,你想要什么?我相信您需要切换键和值并进行有序的密钥收集。

有重复项我会使用一个集合。像这样:

1 - &gt; (2,3)

2 - &gt; (1,4)

类似的东西:

LinkedHashSet<Integer,  ArrayList<Integer>>