キーごとに複数の値を持つ HashMap の作成
シナリオによっては、同じキーを持つ複数の値を HashMap に保存することが必要になる場合があります。 。 Java の HashMap はこれをネイティブにサポートしていませんが、この機能を実現するための代替アプローチがいくつかあります。
1.値としてリストを使用したマップ
1 つのオプションは、値がリストである HashMap を作成することです。これにより、複数の値を 1 つのキーに関連付けることができます。例:
Map<String, List<Person>> peopleByForename = new HashMap<>();
2. Wrapper Class
もう 1 つの方法は、複数の値を保持するラッパー クラスを定義することです。このラッパーは、HashMap:
class Wrapper { private Person person1; private Person person2; public Wrapper(Person person1, Person person2) { this.person1 = person1; this.person2 = person2; } // Getter methods } Map<String, Wrapper> peopleByForename = new HashMap<>();
3 の値として使用できます。タプル
プログラミング言語がタプルをサポートしている場合は、それらを HashMap のキーまたは値として利用できます。例:
Map<String, Tuple2<Person, Person>> peopleByForename = new HashMap<>();
4.複数のマップ
最後に、別の戦略は、値の型ごとに個別のマップを使用することです。
Map<String, Person> firstPersonByForename = new HashMap<>(); Map<String, Person> secondPersonByForename = new HashMap<>();
例
例の検討userId、clientID、およびtimeStamp:
オプション 1: リストを値としてマップする
Map<Integer, List<Pair<String, Long>>> data = new HashMap<>(); data.put(1, Arrays.asList(new Pair<>("client-1", System.currentTimeMillis()))); data.put(1, Arrays.asList(new Pair<>("client-2", System.currentTimeMillis())));
オプション 2: ラッパー クラス
class Data { private Integer userId; private String clientID; private Long timeStamp; public Data(Integer userId, String clientID, Long timeStamp) { this.userId = userId; this.clientID = clientID; this.timeStamp = timeStamp; } } Map<Integer, Data> data = new HashMap<>(); data.put(1, new Data(1, "client-1", System.currentTimeMillis())); data.put(1, new Data(1, "client-2", System.currentTimeMillis()));
アプローチの選択は、アプリケーションの特定の要件と使用するプログラミング言語によって異なります。使用されています。
以上が同じキーを持つ複数の値を HashMap に保存するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。