除去从TreeMap中克隆的对象中的元件没有从在Java主树形图对象中删除

问题描述 投票:1回答:1

我读到TreeMap以下逻辑:

TreeMap.clone()方法返回TreeMap实例的浅表副本。在浅拷贝,对象B点到对象存储器中的位置。换句话说,这两个对象A和B共享相同的元件。键和值本身不被复制。

考虑到这是正确的,我做了一个节目按在我删除从problem克隆的对象的元素,我的期望是,这个元素必须是从主树形图对象中删除太多,但它并没有发生链接treemap。我检查了关键的哈希码过两个对象,但它是一样的。有人可以请让我知道,一个浅拷贝东西在TreeMap的不同,或者我的理解是不正确的东西? JDK - 1.8

java clone treemap shallow-copy
1个回答
1
投票

你的理解是不正确有些(从我p.o.v ... SRY!:)

我的理解是“键和值是相同的”,但克隆的地图都没有(下同)!而作为一个地图的一部分,是一个信息,这也不是key和value“知道”,但只有地图/容器......并将该信息(复制&)每个地图拥有,克隆后。

我要和你误解/观察同意,如果你已经检查了Map.Entry<K, V>s ......(这些也都是未知的基本键和值)。

而克隆后,你/有人必须确保它,如果你想克隆进行同步。


如果你确实想在同一个地图(预期的行为)的“两个引用”,你“只”共享/传递参照本地图(但要注意并发,“正常” Map实现不是线程安全的):

 //not: Map<X, Y> copy = original.clone(), but:
 Map<X, Y> ref = original; // then all changes on "original" are "reflected" at "ref" ..

在“深拷贝”,我明白,“键和值”(甚至更深)被克隆了。

© www.soinside.com 2019 - 2024. All rights reserved.