返回信息流// 如ArrayList,
List<Integer> aList = new ArrayList<>();
aList.add(1);
aList.add(2);
List<Integer> bList = new ArrayList<>();
bList.addAll(aList);
aList.remove(0);
// 最后输出:
aList: [2]
bList: [1, 2]
而不是bList: [2],求解释?
这是一条镜像帖。来源:北邮人论坛 / java / #47959同步于 2016/2/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
addAll() 是否是deep copy?
tlkkevin
2016/2/22镜像同步13 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
暖神能稍微解释下吗?如果只是传了reference,应该两者都变吧?
【 在 nuanyangyang 的大作中提到: 】
: 不是。你的情景完全不涉及deep copy。
remove只是删除了元素的引用,addAll也只是增加了引用而已,去看看源码就知道了
【 在 tlkkevin () 的大作中提到: 】
: 暖神能稍微解释下吗?如果只是传了reference,应该两者都变吧?
// a有两把钥匙,能打开1号门,和2号门。
List<Integer> aList = new ArrayList<>();
aList.add(1);
aList.add(2);
// b跟a说:“我去配一下你的两把钥匙”
List<Integer> bList = new ArrayList<>();
bList.addAll(aList);
// a后来说:“我不想要第一把钥匙了,扔了”
aList.remove(0);
// 最后的问题:a能打开几扇门?b能打开几扇门?
aList: [2]
bList: [1, 2]
【 在 tlkkevin 的大作中提到: 】
: 暖神能稍微解释下吗?如果只是传了reference,应该两者都变吧?
还是你解释一下吧。我不知道“传了reference”和“两者都变”之间的联系。
java本事jsf没有deep copy 都是clone
【 在 tlkkevin 的大作中提到: 】
: // 如ArrayList,
: List<Integer> aList = new ArrayList<>();
: aList.add(1);
: ...................