EntrySet实例如何在HashMap中工作?

时间:2016-12-19 10:08:18

标签: java dictionary

我想了解EntrySet实例在HashMap中的工作原理。 我使用下面的代码,我试着看看实例究竟是什么,

并且entryset是EntrySet的一个实例。

system.out.println(entryset);

打印出整个地图的消息,这是如何工作的?

感谢。

2 个答案:

答案 0 :(得分:1)

我的观点是HashMap中没有真正的EntrySet元素,这意味着没有EntrySet的HashMap副本

EntrySet的方法只是使用HashMap的元素以“Set”方式处理消息。

并且EntrySet中的tostring方法刚被覆盖以显示地图的元素,结果不是来自EntrySet实例。

上一版

我认为方法tostring()被覆盖以打印出地图的消息

答案 1 :(得分:0)

HashMap.EntrySetAbstractCollection继承了toString方法:

  

返回此集合的字符串表示形式。字符串   表示由一个集合中的元素列表组成   它们由迭代器返回,用方括号括起来   (" []&#34)。相邻元素由字符","分隔。 (逗号   和空间)。元素将转换为字符串   将String.valueOf(对象)。

如您所见,它会迭代所有条目,并基本上调用toString方法(valueOf上的toString调用Object,并用逗号分隔它们(和空间)。

然后,查看toString的{​​{1}}方法:

HashMap.Entry

如您所见,它会同时显示键和值。

因此,对public final String toString() { return getKey() + "=" + getValue(); } 的调用将打印System.out.println(entryset);的全部内容。