首先,我尝试使用
Map<Integer, Set<Integer>> map = new HashMap<Integer, HashSet<Integer>>();
,但它没有编译,因为没有可用的转换。
然后我试了
Map<Integer, ? extends Set<Integer>> map = new HashMap<Integer, HashSet<Integer>>();
。它似乎工作,但当我试图打电话
map.put(i, new HashSet<Integer>());
,由于不兼容性,结果证明是失败。
我该如何解决这个问题?
答案 0 :(得分:6)
你可以这样做:
Map<Integer, Set<Integer>> map = new HashMap<Integer, Set<Integer>>();
map.put(1, new HashSet<Integer>());
当您从地图中检索该值时,它将是Set<Integer>
类型,但根据您的期望,这不会产生任何差异。但是,如果您只想检索HashSet<Integer>
,那么您的地图定义应为
Map<Integer, HashSet<Integer>> map = new HashMap<Integer, HashSet<Integer>>();
答案 1 :(得分:1)
你可以这样做:
Map<Integer, Set<Integer>> map = new HashMap<>();