java - 如何在java中正确实例化 map 集?

标签 java hashmap set

我想要一个Set < Map <Character, Integer> >实例。但是我无法用 new HashSet < HashMap<Character, Integer> > 实例化它.

我必须将其更改为

Set<HashMap<Character, Integer>> v = new HashSet<HashMap<Character, Integer>>();

Set<Map<Character, Integer>> v = new HashSet<Map<Character, Integer>>();   // I prefer this one

谁能告诉我为什么Java无法转换HashSet<HashMap<Character, Integer>>Set<Map<Character, Integer>>

最佳答案

向您展示等效情况会更简单 - 让我们使用 ObjectString代替 Map<Character, Integer>HashMap<Character, Integer> .

假设我们可以Set<Object> set = new HashSet<String>(); 。那么这段代码必须是有效的:

HashSet<String> strings = new HashSet<String>();
HashSet<Object> objects = strings;
objects.add(new Object()); // Not a string!

String firstString = strings.iterator().next(); // Bang!

你看出这里出了什么问题了吗?一组字符串不是一组对象,因为您可以将任何对象添加到一组对象中,而一组字符串只能包含字符串。 p>

一旦你明白了这一点,就把它带回你更复杂的情况:a Set<HashMap<Character, Integer>>只能包含 HashMap<Character, Integer>元素...而 Set<Map<Character, Integer>>您可以添加任何类型的Map<Character, Integer> 。所以它们不兼容。

关于java - 如何在java中正确实例化 map 集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22112123/

相关文章:

java - 如何从 Java 中的 txt 文件读取 2 个特定列?

java - HashMap<Object,DateTime> 中的 ConcurrentModificationException

python - 如何从由术语列表形成的 Pandas 系列中获取一组

sql - 更新 SQL 表中的数据类型图像

javascript - 在数组原型(prototype)中创建 JS 集

java - 如何发现序列化对象的serialVersionUID

java - 用正则表达式中的路径递归替换正则表达式查找

Java:通常如何处理 jni 调用中 native 代码的错误?

java - 使用JAVA形成测试数据列表进行selenium功能测试

java - 在spark java中下载图片