Я реализовал следующее:
public class MultiMapClass<K,V> implements MultiMap<K,V> {
private Map<K, TreeSet<V>> multiMap= new HashMap<K,TreeSet<V>>();
public MultiMapClass(){
}
public void put(K key, V value){
multiMap.get(key).add(value);
}
public Set<V> get(K key){
return multiMap.get(key);
}
}
public class TaggedMultiMapClass<K,T,V> extends MultiMapClass<K,V> implements TaggedMultiMap<K, V, T> {
private Map<K,HashMap<V,T>> tags = new HashMap<K,HashMap<V,T>>();
public TaggedMultiMapClass(){
}
@Override
public void put(K key, V value, T tag) {
tags.get(key).put(value,tag);
}
@Override
public T getTag(K key, V val) {
return tags.get(key).get(val);
}
@Override
public T getTag(TaggedMultiMap.Entry<K, V> entry) {
return tags.get(entry.getKey()).get(entry.getValue());
}
@Override
public Set<T> getTags(K key) {
return (Set<T>) tags.get(key).values(); }
}
Taggedmultimap, предположим, будет мультикарта , но я просто не чувствую, что сделал.Похоже, у меня просто есть два разных класса с двумя разными представлениями и вообще без связи.Если я решу, что один объект расширяется от другого, должен ли другой использовать некоторые методы первого?Я не могу выполнить функцию тегов (каждое значение набора значений должно иметь свой тег) с использованием Map<K, TreeSet<V>> multiMap= new HashMap<K,TreeSet<V>>()
, и мне не нужно Map<K,HashMap<V,T>> tags = new HashMap<K,HashMap<V,T>>();
для использования мультикарты.Что мне делать?