当我将它们转换为 Set 时,LinkedHashMap 元素会发生什么

  • 本文关键字:元素 LinkedHashMap 转换 Set java
  • 更新时间 :
  • 英文 :

LinkedHashMap<String,ArrayList<String>> h;

它包含:

key 1 : value A, B, C, D
2 : E,F
3 : G

我不太明白设置界面。也许一点可视化会有所帮助。请帮我想象LinkedHashMap中的所有这些元素一旦我将它们转换为Set,它们会是什么样子?

Set set = h.entrySet();

对不起,也许我的问题有点晦涩难懂。随着线程的发展,我将尝试锐化它。

Map的条目集是映射中的条目集

映射

中的条目是从键到值的映射。在映射类型为 ...<String, ArrayList<String>> 的情况下,单个条目是一对String(键)和一对ArrayList<String>(值)。

以下代码片段可能会对此有所了解:

LinkedHashMap<String, List<String>> map =
        new LinkedHashMap<String, List<String>>();
map.put("1", Arrays.asList("A", "B", "C"));
map.put("2", Arrays.asList("E", "F"));
map.put("3", Arrays.asList("G"));
System.out.println(map.entrySet());
System.out.println(map.entrySet().getClass());

输出:

[1=[A, B, C], 2=[E, F], 3=[G]]     # All entries (key/value pairs)
class java.util.HashMap$EntrySet   # This particular entry set class.

例如,在这种情况下,条目集实际上是HashMap的内部类,名为EntrySet

entrySet()只是映射中的条目(键值对)。它将帮助您查看 entrySet() 返回的类型,这在您的示例中Set<Map.Entry<String, ArrayList<String>>>。请参阅 Map.Entry javadoc。

另请注意,地图不会转换为条目集,而是将条目集转换为映射中条目的视图。

Set是什么而言:它是一组元素,根据唯一的某些定义,每个元素都是唯一的(大多数Set s为equals/hashCodeSortedSet s为Comparable/Comparator)。由于Map最多可以有一个值映射到单个键,因此每个键值条目都保证是唯一的。

最新更新