自己的MultiMap实现,put的问题

时间:2014-12-12 10:38:12

标签: java hashmap multimap

为了学习,我尝试制作一个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?

1 个答案:

答案 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;
}