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

マップから値を取得すると、タイプは になりますが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 に答える