Java:将HashMap值转换为Set <Integer>

Ton*_*yGW 7 java hashmap set

关于Java中的HashMap <>的另一个问题:

我有以下内容

Map<String, Set<Integer>> myWordDict = new HashMap<String, Set<Integer>>();
Run Code Online (Sandbox Code Playgroud)

在将数据存储到变量中之后myWordDict,我想迭代HashMapValues,并将每个值添加到新的Set变量中?

当我尝试这样做时Set<Integer> newVariable = myWordDict.entrySet(),似乎数据类型不兼容.

所以我的问题基本上是:

如何将HashMap值或entrySet()转换为Set?

谢谢

Kam*_*rya 17

尝试:

Set<Integer> newVariable = mywordDict.keySet();
Run Code Online (Sandbox Code Playgroud)

要么

Set<Integer> newVariable = new HashSet<Integer>(myWordDict.values());
Run Code Online (Sandbox Code Playgroud)


Mas*_*dul 10

您的声明应如下所示.它会将您的地图值转换为Collection

  Collection<Set<Integer>> newVariable = myWordDict.values();
Run Code Online (Sandbox Code Playgroud)

  • 你确定这会起作用吗?首先,您必须对其进行强制转换,即使您这样做,它也会抛出“ClassCastException”。 (2认同)

Ani*_*rni 5

什么entrySet回报?

public Set<Map.Entry<K,V>> entrySet()
Run Code Online (Sandbox Code Playgroud)

返回此映射中包含的映射的Set视图.该集由地图支持,因此对地图的更改将反映在集中,反之亦然.

如果你想迭代myWordDict哈希映射那么

for(Map.Entry<String, Set<Integer>> entry : myWordDict.entrySet())
{
   Set<Integer> newVariable = entry.getValue();
}
Run Code Online (Sandbox Code Playgroud)

相关链接