値リストを拡張できるマップを作成するにはどうすればよいですか。たとえば、キーAと値B {1,2,3}のリストを含むマップがあります。次に、プログラム実行中のある時点で、私はリストBにもっと価値のあるex:4を追加したいと思います。今度は新しいマップは(A、{1,2,3,4})のようになります。どうやってやるの?Javaの単一キーに複数の値を追加する方法
答えて
Map<K,V>
は、あなたがタイプList<T>
であることがV
を必要とし、1つの値に一つのキーをマッピングしているので:そのようなタイプを持っていることの
Map<String,List<Integer>> multiMap = new HashMap<>();
1つの結果は今のキーに項目を追加するプロセスが構成されていることです2つのステップ:キーのリストが存在するかどうかをチェックする必要があります。その後、いずれかの既存のリストに新しい項目を追加、または単一アイテムに新しいリストを追加します。
List<Integer> current = multiMap.get(key);
if (current == null) {
current = new ArrayList<Integer>();
multiMap.put(key, current);
}
current.add(val);
は、Java 8を使用する場合、 computeIfAbsent
を使用して大幅にコードを簡素化:
multiMap.computeIfAbsent(key, k -> new ArrayList<>()).add(value);
最新の 'computeIfAbsent'メソッドを使って実装を単純化することができます:' multiMap.computeIfAbsent(key、k - > new ArrayList <>())。add(value); ' –
@MalteHartwig Right、Java 8はこの便利なオプションを追加し、操作の可読性を大幅に向上させました。ありがとうございました! – dasblinkenlight
@MalteHartwig:うわーありがとう!これはJava 8で素晴らしい見た目になります! – Sonn
このようなコレクションはすでに実装されています。 Multimap from Guavaをご覧ください。自転車をゼロから作り上げてはいけません。
希望すると助かります!
は、新たな一時変数を使用して、新しい整数を追加し、これに チェックは助けかもしれない説明しています。
Map<String, List<Integer>> map = new HashMap<String, List<Integer>>();
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
map.put("A", list);
map.forEach((key,value)->System.out.print(key + " : "+
value));
List<Integer> newList = (ArrayList<Integer>)map.get("A");
newList.add(4);
System.out.println();
map.put("A", newList);
map.forEach((key,value)->System.out.print(key + " : "+
value));
より一般的な解決策は、 は、例えば値のような任意のコレクション型を提供するマルチマップクラスを有することですArrayList: 私は数週間前にJava-Bookでこれを見つけました。例:
class MultiMap<K, V>
{
private final Map<K,Collection<V>> map = new HashMap<>();
public Collection<V> get(K key)
{
return map.getOrDefault(key, Collections.<V> emptyList());
}
public void put(K key,V value)
{
map.computeIfAbsent(key, k -> new ArrayList<>()).add(value);
}
}
使用法かもしれ:これは役立ちます
MultiMap<Integer,String> map = new MultiMap<>();
int id = 34;
System.out.println(map.get(id)); // creates an ArrayList<String> for key 34
map.put(id,"first value for 34");
System.out.println(map.get(id)); // [first value for 34]
map.put(id,"second");
System.out.println(map.get(id)); // [first value for 34, second]
希望...
- 1. 複数の値のセットをキーに追加する方法は?
- 2. 複数の値を迅速に単一のキーに追加できますか?
- 3. ArrayListで複数の値を単一のインデックスに追加する
- 4. 複数の値を単一のHTMLセルに追加する
- 5. JavaでRedis(キャッシュ)の単一の値を指す複数のキー
- 6. Hadoopレデューサーが単一のキーに複数の値を出力する方法
- 7. Pythonで単一のタプルに値を追加する方法
- 8. 複数のルートを処理する単一のメソッドを追加する方法
- 9. asp.netのweb.configで単一のキーにリストまたは複数の値を追加するには
- 10. Python - 複数のキーと値を辞書に追加する方法
- 11. vuforiaの単一のターゲットに複数のオブジェクトを追加する
- 12. jQueryを使用して複数のテキストボックスの値を別の単一のテキストボックスに追加する方法は?
- 13. Flume:単一のシンクにログを追加する複数のソース
- 14. オブジェクトのキーに複数の値を追加するjs
- 15. C#のハッシュテーブル内の単一のキーに複数の値を追加していますか?
- 16. 複数のアイテムを一度にJavaのArrayListに追加する
- 17. 単一ノード内に複数のサービスインスタンスを追加する
- 18. Djangoで複数の外部キーを追加する方法
- 19. jsonの単一キーに複数の値を格納
- 20. キーに複数の値を追加する
- 21. 同じキーに複数の値をperlハッシュで追加する
- 22. Javaで一連のSQL時刻値を追加する方法
- 23. レルムの一意のキーに異なる値を追加する方法は?
- 24. 複数の行の値をSQLに追加する方法は?
- 25. React Naticeのクロスクッキーに複数の値を追加する方法
- 26. 文字列の単純な配列にキー値を追加する方法は?
- 27. Firebaseのキーに複数の値を追加できますか?
- 28. 新しいキー値をJavaの既存のリストマップオブジェクトに追加する方法
- 29. 複数の値をリストに追加する方法C#
- 30. 複数の値をリストに追加する方法+ jQuery
'map.get( "A")(マップ値は、文字列のArrayListのである)を追加します。 (4); – QBrute