我想了解EntrySet实例在HashMap中的工作原理。 我使用下面的代码,我试着看看实例究竟是什么,
并且entryset是EntrySet的一个实例。
system.out.println(entryset);
打印出整个地图的消息,这是如何工作的?
感谢。
答案 0 :(得分:1)
我的观点是HashMap中没有真正的EntrySet元素,这意味着没有EntrySet的HashMap副本
EntrySet的方法只是使用HashMap的元素以“Set”方式处理消息。
并且EntrySet中的tostring方法刚被覆盖以显示地图的元素,结果不是来自EntrySet实例。
上一版
我认为方法tostring()被覆盖以打印出地图的消息
答案 1 :(得分:0)
HashMap.EntrySet
从AbstractCollection
继承了toString方法:
返回此集合的字符串表示形式。字符串 表示由一个集合中的元素列表组成 它们由迭代器返回,用方括号括起来 (" []&#34)。相邻元素由字符","分隔。 (逗号 和空间)。元素将转换为字符串 将String.valueOf(对象)。
如您所见,它会迭代所有条目,并基本上调用toString
方法(valueOf
上的toString
调用Object
,并用逗号分隔它们(和空间)。
然后,查看toString
的{{1}}方法:
HashMap.Entry
如您所见,它会同时显示键和值。
因此,对public final String toString() {
return getKey() + "=" + getValue();
}
的调用将打印System.out.println(entryset);
的全部内容。