list中add覆盖处理

来源:互联网 发布:俄罗斯反对苏联 知乎 编辑:程序博客网 时间:2024/06/03 23:00
  1. ArrayList<SomeType> myList new ArraList<User>();  
  2. for(.....)  
  3.  
  4.     Userst new User 
  5.     for(.....)  
  6.          
  7.             st ooxx;  
  8.             myList.add(st);  
  9.          
  10.  

写成类似上面程序的话,新加入的st会覆盖上一个st,不希望这样的话,必须把实例化st的过程(SomeType st = new SomeType();这句)放进第二个for循环中.

原因:

其实add加进去的是对象的一个引用,对象实例化放在循环外面,你每次都更新了这个引用的值,当然list里面的值都一样的。如果把SomeType st = new SomeType;放到循环里面,每次都生成一个新的对象,更改自身不会对其他元素有影响...

0 0