本文主要是介绍JAVA-List集合循环赋值时覆盖原值问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景:做项目时需要将一个集合向另一个集合中插入,发现将原集合(A)插入到新集合(B)中,修改原集合(A)时,新集合(B)也会发生相应的变化。查阅好发现是值类型和引用类型的坑。
问题简单重现:
定义:原集合A、新集合B、以及数组arr。
需求:原集合A,递增取出数组中arr的元素,及[1]、[1,2]、[1,2,3]…[1,2,3,4,5]; 再将集合A插入到集合 B中,最终使得集合B:[[1],[1,2,],[1,2,3],[1,2,3,4],[1,2,3,4,5]]
结果:如图,每次对集合A重新赋值时,已插入B集合中的A也发生了相应的改变。
网上查找:说需要在 for循环中new 集合,这样 就能使每个循环都新建A,就是不同的引用;但是实际效果并不满足我的需要。
解决办法:
在for循环中new一个中间变量,temp;temp.addAll(A);
这篇关于JAVA-List集合循环赋值时覆盖原值问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!