1

Integerへのマップを作成したいのですがString、このマップはキーを並べ替えます。だから私は使用します:

TreeMap<Integer, String> thm = new TreeMap<Integer, String>();
thm.put(100, "String 1");
thm.put(11, "String 2");
thm.put(100, "String 3");

問題は、同じキーが 2 つあるときに、TreeMap1 つしか含まれていないことです。TreeMap2 つの同じケイを cobntainsする方法は? TreeMap問題が解決しない場合は、どうすればよいですか?

あなたの返信を読み ましたがGuava Tree multi-map 、multiMap は私のキーを注文しません

4

6 に答える 6

3

この目的のために、Guava Tree マルチマップを使用する必要がある場合があります。マップは、既存のキーが存在する場合、新しいキーで上書きします。

例:

   Multimap<String, String> myMultimap = TreeMultimap.create();      
  // Adding some key/value
  myMultimap.put("Fruits", "Bannana");
  myMultimap.put("Fruits", "Apple");
  myMultimap.put("Fruits", "Pear");
  myMultimap.put("Vegetables", "Carrot")

これはmulti-map の使用方法に関するチュートリアルです。

于 2012-11-07T17:08:39.863 に答える
2

キーごとに複数の値が必要な場合は、Guava Multimapを確認してください。

Map に似たコレクションですが、複数の値を 1 つのキーに関連付けることができます。同じキーで異なる値を指定して put(K, V) を 2 回呼び出すと、マルチマップにはキーから両方の値へのマッピングが含まれます。

特に (並べ替え要件に対処するために) 実装TreeMultimapはキーと値を並べ替えます。ドキュメントから:

キーと値が自然順序付けまたは提供されたコンパレーターによって順序付けられる Multimap の実装。

于 2012-11-07T17:09:52.047 に答える
2

クラスを実装するjava.util.Mapは重複キーを許可しません。Guava Multimapの別の外観については 。

map.put("key1", "val1");
 map.put("key1", "val2");
于 2012-11-07T17:10:50.593 に答える
2

TreeMap を使用しているので、キーの自然な並べ替えに興味があると思います。

もしそうなら、最も簡単な解決策は、 を使用してTreeMap<Integer, List<String>>、追加時に を作成し、ArrayList<String>何も存在しない場合にリストに項目を追加するようです

于 2012-11-07T17:10:50.350 に答える
1

キーから複数の値 google guava libray へのマッピングを処理するのは簡単ですMultimap。マップと同様にキーを値にマップしますが、各キーは複数の値に関連付けることができます。Multimap の実装は、ArrayListMultimap、HashMultimap、SetMultimap などです。

Multimap<Integer, String> thm = TreeMultimap.create();
thm.put(100, "key 1");
thm.put(11, "key 2");
thm.put(100, "key 3");
于 2012-11-07T17:09:01.423 に答える
0

外部ライブラリに依存することなく、代わりに

`Map<Integer,List<String>> thm= new TreeMap<Integer,List<String>>();`

追加するには、する必要があります

  thm.get

null を返す場合は、1 つの要素を持つ新しい ArrayList を配置し、ArrayList を返す場合は、それに追加するだけです

于 2012-11-07T17:11:08.067 に答える