关于直接修改list集合元素的几种情况


关于直接修改list集合元素的几种情况

问题产生以及复现

在刷题的时候发现了一行代码

list.get(list.size()-1)[1]=Math.max(intervals[i][1],list.get(list.size()-1)[1]);

最初开始看并不对劲,因为我记得不能直接修改集合中的元素。于是便进行了测试。
在这里插入图片描述
在这里插入图片描述


果然报错了,那么为什嚒最初的那个代码可以运行成功呢?
我把泛型进行了修改,再次进行测试:
在这里插入图片描述

在这里插入图片描述
可以看到完全没问题,结果也成功的改变了。

结论

原来在第二种情况,我们并没有直接修改存在集合中的那个数组元素,而是改变的该数组中的值。
那个数组对象还是原来的数组对象(见下面代码证明),所以并不存在直接修改集合中的元素报错这一说了。

在这里插入图片描述

在这里插入图片描述


文章作者: fFee-ops
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 fFee-ops !
评论
  目录