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

标签 java collections

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

  1. 键,值
  2. 允许重复值
  3. 能够按值(value)排序并同时保留重复值(value)。

例如: 没有订购

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

最佳答案

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

关于java - 具有重复值(键,值)的有序集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19597606/

相关文章:

java - 这应该是同步方法吗?

java - 具有对象和泛型列表的构造函数

java - 将一行文本解析为多个值

grails - 在Grails中使用数据库查询按集合中的值排序

java - 如何使用Java洗牌(尝试使用hashmap,不起作用)?

java - InputStreams 被 GCed

java - 用 swagger 隐藏 api 模型属性

java - 我不明白在java中加载图片的代码

Java - 按步骤对数组进行切片

.NET集合和大对象堆(LOH)