MultiMap
generics な継承とか。
import java.util.*; interface MultiMap<K,V> extends Map<K,Set<V>> { boolean put(K key, V value); } class MultiHashMap<K,V> extends HashMap<K,Set<V>> implements MultiMap<K,V> { public boolean put(K key, V value) { Set<V> s = get(key); if ( s == null ) { s = new HashSet<V>(); put(key, s); } return s.add(value); } } MultiMap<String,String> mmap = new MultiHashMap<String, String>(); mmap.put("ABC", "Abc"); mmap.put("ABC", "aBc"); mmap.put("ABC", "abC"); mmap.put("ABC", "Abc"); System.out.println(mmap); // ==> {ABC=[aBc, abC, Abc]}
Vの配列を作ろうとして若干はまったので、メモ。