私はguavaのGoogleコレクションライブラリを使用していますが、私は最新のバージョンと考えています。guava(google)からの削除Multimapはキー自体を削除しません。どうして?それを行う方法?
与えられたKの値のマップから最終(K、V)のペアを削除すると、マップにはまだKのエントリが含まれています。ここでVは空のコレクションです。
私は地図にこのエントリが含まれていないと思います。なぜ私はそれを削除できませんか?それとも、できれば、どう?
これはおそらく私が逃した単純なものです。コード例を示します。ありがとう。
// A plain ordinary map.
Map<Integer, Integer> hm = new HashMap<Integer, Integer>();
hm.put(1, 2);
hm.remove(1);
// Value of key 1 in HashMap: null
System.out.println("Value of key 1 in HashMap: " + hm.get(1));
// A list multimap.
ListMultimap<Integer, Integer> lmm = ArrayListMultimap.<Integer, Integer> create();
lmm.put(1, 2);
lmm.remove(1, 2);
// Value of key 1 in ArrayListMultiMap: []
System.out.println("Value of key 1 in ArrayListMultiMap: " + lmm.get(1));
// A set multimap.
SetMultimap<Integer, Integer> smm = HashMultimap.<Integer, Integer> create();
smm.put(1, 2);
smm.remove(1, 2);
// Value of key 1 in HashMultimap: []
System.out.println("Value of key 1 in HashMultimap: " + smm.get(1));
マルチマップでの削除は、実際には値コレクションが空になったら、マルチマップから削除されます。 –
興味深い。それについて知らなかった。それは、文書化されていない機能のようですが(javadocsではこれについて何も見ていませんでした)。このような実装の詳細は将来変更される可能性があります... –
私はそれが変わりやすいとは思わない。それは規則的な地図の意味論に従っている。変更する場合、 'containskey'の動作が正しいことを確認する必要があります。 –