在java中,使用数组如何防止操作对象的引用造成错误

情况一、

复制代码
List<Grid> grids = new ArrayList<>();
// 添加一些元素到 grids
List<Grid> newList = grids;
// 在 grids 中添加新元素
grids.add(new Grid());

在这种情况下,newList 和 grids 实际上引用的是同一个对象。也就是说,它们只是不同的引用名,但指向相同的 ArrayList 实例。因此,对 grids 进行的任何修改(如添加或删除元素)都会反映在 newList 中,反之亦然。

情况二、

复制代码
List<Grid> grids = new ArrayList<>();
// 添加一些元素到 grids
List<Grid> newList = grids.stream().collect(Collectors.toList());
// 在 grids 中添加新元素
grids.add(new Grid());

// newList 不会包含新添加的元素

当你使用 grids.stream().collect(Collectors.toList()) 时,它会创建一个新的 List 对象,包含 grids 中的所有元素。这意味着新创建的 List 与原来的 grids 是独立的。如果之后在 grids 中插入新的值,这些值不会影响之前通过 collect(Collectors.toList()) 方法得到的 List,因为它们是两个不同的对象。

相关推荐
CSDN_RTKLIB4 分钟前
C++取模与取余
开发语言·c++
win x4 分钟前
Redis 主从复制
java·数据库·redis
星河耀银海20 分钟前
C++开发入门——环境搭建与第一个程序
开发语言·c++·策略模式
weixin_4239950023 分钟前
unity 处理图片:截图,下载,保存
java·unity·游戏引擎
还不秃顶的计科生24 分钟前
defaultdict讲解
开发语言·javascript·ecmascript
帅气的你26 分钟前
从零封装一个通用的 API 接口返回类:统一前后端交互格式
java·设计模式
qq_1780570727 分钟前
基于minio实现的分片上传-支持断点续传
java
花归去29 分钟前
echarts 柱状图包含右侧进度
开发语言·前端·javascript
wjs202431 分钟前
Java 数组
开发语言
高山上有一只小老虎31 分钟前
灵异背包?
java·算法