关于直接修改list集合元素的几种情况
问题产生以及复现
在刷题的时候发现了一行代码
list.get(list.size()-1)[1]=Math.max(intervals[i][1],list.get(list.size()-1)[1]);
最初开始看并不对劲,因为我记得不能直接修改集合中的元素。于是便进行了测试。
果然报错了,那么为什嚒最初的那个代码可以运行成功呢?
我把泛型进行了修改,再次进行测试:
可以看到完全没问题,结果也成功的改变了。
结论
原来在第二种情况,我们并没有直接修改存在集合中的那个数组元素,而是改变的该数组中的值。
那个数组对象还是原来的数组对象(见下面代码证明),所以并不存在直接修改集合中的元素报错这一说了。