1

首先,我尝试使用

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>());

,结果是由于不兼容而失败。

我该如何解决这个问题?

4

2 回答 2

6

你可以简单地这样做:

Map<Integer, Set<Integer>> map = new HashMap<Integer, Set<Integer>>();
map.put(1, new HashSet<Integer>());

当您从地图中检索值时,它将是 type Set<Integer>,但这不应该根据您的期望产生任何影响。但是,如果您只想检索,HashSet<Integer>那么您的地图定义应该是

Map<Integer, HashSet<Integer>> map = new HashMap<Integer, HashSet<Integer>>();
于 2012-11-10T03:04:02.870 回答
1

你可以这样做:

Map<Integer, Set<Integer>> map = new HashMap<>();
于 2012-11-10T03:05:02.320 回答