gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:00:12 28 4
gpt4 key购买 nike

我想要一个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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com