gpt4 book ai didi

java - 在 java 中使用 ArrayList 时的深拷贝

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:17:12 24 4
gpt4 key购买 nike

我知道这是一件小事,但我想问这个问题。假设我有一个返回对象 ArrayList 的 get 方法。首先我们必须返回它的副本吗?如果是这样,它是否必须是 ArrayList 的深拷贝?当里面的对象不可变时,我们还需要做深拷贝吗?如果我们使用这种类型的构造函数

ArrayList<T> arr = new ArrayList<>(collection);

那么数组的元素是被复制还是仍然指向旧值?谢谢

最佳答案

这取决于您的用例。有时需要公开底层集合,有时则不然。

例如,如果您想要为您的类利用集合方法,您可以返回基础集合(或基础集合的可修改 View )。这使您类(class)的客户可以做,例如

phoneBook.getPeople().removeIf(Person::isAddressInvalid);

如果您不想公开底层集合,我会选择

return new ArrayList<>(yourCollection);

我认为在 get 方法中返回深拷贝的情况非常

关于java - 在 java 中使用 ArrayList 时的深拷贝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28646042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com