グアバのマルチマップについて質問があります。ドキュメントはどういうわけかあいまいです。マルチマップの put-Method については、ecrise から次の説明が得られます。
指定された値をこのマップ内の指定されたキーに関連付けます (オプションの操作)。マップに以前にキーのマッピングが含まれていた場合、古い値は指定された値に置き換えられます。
http://docs.guava-libraries.googlecode.com/git-history/release/javadoc/com/google/common/collect/Multimap.html#put(K,V)のドキュメントには、次のように書かれています。
マルチマップにキーと値のペアを格納します。マルチマップの実装によっては、キーと値のペアの重複を許可するものがあります。その場合、put は常に新しいキーと値のペアを追加し、マルチマップのサイズを 1 増やします。他の実装では重複を禁止し、既にマルチマップにあるキーと値のペアを保存しても効果はありません。 .
日食の説明は理にかなっていて、値が上書きされる理由を説明していますが、ドキュメントには、1 つのキーに対して複数の値を格納できると記載されています。
私のコードの一部を示します。
public class Updatemanager {
static Map<String,Multimap<String,Values>> updateMap = new HashMap<String, Multimap<String, Values>>();
public static void collectUpdates(String name, String categorie, Values v)
{
Multimap<String, Values> mm = HashMultimap.create();
mm.put(categorie, v);
updateMap.put(name, mm);
}
私の望ましい出力は次のようになります。
{name={categorie1=[Values], categorie2 = [Values]}
現在のところ、特定のキーの updateMap の内容が常に上書きされます。上書きしてマップに追加するだけで、どうすればそれを作成できますか?
よろしくお願いします。