当我在Java V get(Object key)
中使用TreeMap<K, V>
方法时,我获得了与我在V get(Object key)
方法中插入的键相关的值的全新副本,或者我得到了一个& #34;参考&#34;到TreeMap
内的值V?
答案 0 :(得分:3)
Map#get()
会返回引用,但Map#put()
方法也只会存储引用。实际的Object
存在于堆上。事实上,TreeMap
与Entry<K,V>
引用一起工作,而堆上的实际Entry
对象则指向实际的键和值 上的值对象。
答案 1 :(得分:1)
通常,Java的标准集合不会复制它们给出的值。如果您注意到,这些值不会被限制为Cloneable
(即使它们是{,由于Cloneable
的奇怪性,它也不会确保它们实际上是可克隆的)。并且没有其他方法可以创建副本(因为您无法在泛型类型变量上运行new
)。
因此,他们必须处理所提供的参考资料,以及使用get()
检索时所获得的参考资料。