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

Guava を使用TreeMultimapして、順序付きマルチマップを作成できます。これは同じ key 内の値を並べ替えますが、繰り返しを値で並べ替える必要がある場合は、キーと値を交換するのが最善の方法です (キーで検索する機能を放棄します)。

于 2013-10-25T19:08:21.557 に答える
1

何を手に入れたいのかもう一度読んでください!

順序付けされた値が必要です。

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

いつ、どのような場合に欲しいですか?キーと値を切り替えて、順序付けられたキー コレクションを取得する必要があると思います。

複製では、コレクションを使用します。このようなもの:

1 - > (2,3)

2 - > (1,4)

何かのようなもの:

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