4
Java 8は、Map
インターフェイスにいくつかの素敵なメソッドを導入しました。私にとって、ギャップは、merge
メソッドの変更可能なバージョンがないということです。例えばMap.mergeの変更可能なバージョン
、map
はMap<String, List<Integer>>
であり、あなたはこれを行うにしたいとします
List<Integer> list = map.get("a");
if (list == null)
list = map.put("a", new ArrayList<>());
list.add(1);
(私はあなたがこの種のもののためにグアバのMultiMap
を使用することができることを承知していますが、私は標準的なJavaに興味を。 )
私には、Java 8でこれを単純化する良い方法があるはずですが、私はそれを見つけることができません。私は
map.mutableMerge("a", 1, ArrayList::new, List::add); // Not real code
のように、それは単一のメソッド呼び出しでなければなりません数えるが、私は新しいメソッドを使用して思い付くことができる最高は
map.computeIfAbsent("a", k -> new ArrayList<>());
map.compute("a", (k, v) -> {
v.add(1);
return v;
});
であるが、これは、元のよりも良いではありません。私は明白な何かを欠いていますか
私は彼らがそれを考えなければならないことを知っていました。私は厚くて、私は15分で受け入れます。ありがとうございました。 –