将LinkedHashMap元素转换为Set时,LinkedHashMap元素会发生什么?

时间:2011-05-19 17:44:52

标签: java

LinkedHashMap<String,ArrayList<String>> h;

它包含:

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

我不太了解Set界面。也许一点可视化会有所帮助。请帮我看看LinkedHashMap中的所有元素在将它们转换为Set后会是什么样子?

Set set = h.entrySet();

对不起,也许我的问题有点模糊。随着线程的发展,我会尝试磨砺它。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

另请注意,地图不会转换为条目集 - 相反,条目集是地图中条目的视图。

至于Set是什么:它是一组元素,根据大多数equals的唯一(hashCode / Set定义,每个元素都是唯一的,Comparable / Comparator代表SortedSet s)。由于Map最多只能有一个映射到单个键的值,因此每个键值条目都保证是唯一的。

相关问题