为了学习,我尝试制作一个MultiMap实现。 (并且为了避免依赖于我制作的库的其他库)。 它不一定非常完美。
目前我有这个:
class MultiMap<k, v> implements Map {
HashMap<k, List<v>> hMap = new HashMap<k, List<v>>();
public MultiMap () {
}
跟随@Override
的所有Map
方法。
一个是这样的:
@Override
public Object get(Object o) {
return hMap.get(o);
}
我遇到这个问题:
@Override
public Object put(Object o, Object o2) {
// will return a list
Object toReturn = get(o);
if(hMap.containsValue(o)) {
// is this even possible?
(List<v>)(List<?>)get(o); // <<< problem: "Syntax error on token(s), misplaced construct(s)"
// ^ next .add(o2);
}
// etc.
return toReturn;
}
是否可以从get方法中获取List?
答案 0 :(得分:0)
您可以定义类class MultiMap<k, v> implements Map<k, List<v>>
然后添加新方法public List<v> put(k key, v value)
。
public List<v> put(k key, v value) {
List<v> list = get(key);
if(list == null)
list = new ArrayList<>();
list.add(value);
return list;
}