1 35
1 30
1 20
2 10
3 40
3 25
3 15
をマッピングに問題が発生します
を、このデータをマッピングする手助けが必要です。
1 35
1 30
1 20
2 10
3 40
3 25
3 15
をマッピングに問題が発生します
を、このデータをマッピングする手助けが必要です。
あなたが記述するMap
およびHashMap
の振る舞いは、他のコメント作成者が注意しているとおりです。あなたが望むのはマルチマップです。あなたは自分自身をロールすることができます(これをしないでください - 他のコメント作成者がリストをマップに提案しますが、それはすぐに面倒になります)自分自身を本当にロールしたい場合は、リスト/ )またはGuavaのmultimapを使用してください。例:
import com.google.common.collect.HashMultimap;
import com.google.common.collect.SetMultimap;
public static void main(String[] args)
{
final SetMultimap<Integer, Integer> foo = HashMultimap.create();
foo.put(1,35);
foo.put( 1,30);
foo.put( 1,20);
foo.put( 2,10);
foo.put( 3,40);
foo.put( 3,25);
foo.put( 3,15);
System.out.println(foo);
}
出力:
{1 = [35、20、30]、2 = [10]、3 = [25、40、 15]}
値にアクセスするには、何をしたいかによっていくつかの方法があります。 get(Integer key)
を呼び出すと、値のコレクションが返されます。
また、Guavaの多くの関連性を挙げているthis answerをチェックしてください。
パブリックインターフェイス地図
キーを値にマッピングするオブジェクト。 マップに重複キーを含めることはできません。 各キーは最大で1つの値にマップできます。
代わりに、各キーに数字のリストを関連付けることができます。
この問題を解決するには、Map<Long, List<Long>>
(またはあなたの持つタイプ)を使用できます。
Map
は、キーの値が1つだけです。 Guava/Google CollectionsのMultimap
インターフェイスを使用して、キーの複数の値を格納することができます。
それとも
一覧<ペア<整数をペア< F、S>クラスを作成し、リストに入れ、整数>>