java中List的add方法不检查List中是否含有已加入项java
java中List的add方法不检查List中是否含有已加入项测试
java中List的add方法不检查List中是否含有已加入项spa
重要事情说三遍code
List中添加的是引用,并且不检查是否已经加入list对象
这也就意味着:若是管理一堆循环使用的对象,对list的存放操做不该该是链式而应该是栈式,否则的话随着链的推动实际上可供使用的对象会被挤入垃圾堆而后被回收掉,列表看起来大小变化不大可是实际上只剩很少的实际引用对象,而对该对象的任何操做(如设置可见属性或者设置值)都会给list的使用带来不可估量的影响blog
并且每次添加入列表,若是对于列表中的元素有惟一性要求的话(通常都有吧)须要检查是否已经存在于列表中。开发
下附测试代码:rem
1 fucker b = new fucker(); 2 fucker a = new fucker(); 3 a.Oops(); 4 b.Oops(); 5 6 List<fucker> lbs = new ArrayList<>(); 7 8 for (int i= 0;i<10;i++) { 9 lbs.add(a); 10 lbs.add(b); 11 } 12 13 a.fuck(); 14 for (int i=0;i<10;i++) { 15 lbs.get(0).fuck(); 16 lbs.remove(lbs.get(0)); 17 lbs.get(0).fuck(); 18 lbs.remove(lbs.get(0)); 19 }
fucker:get
1 public class fucker { 2 private int value=0; 3 4 public void fuck() { 5 System.out.println("OOOO!"); 6 System.out.println(value); 7 value = 0; 8 } 9 10 public void Oops() { 11 value = 1; 12 System.out.println("Changed!"); 13 } 14 15 }
其实通常来讲这种对象应该是不用管理的,可是师兄不信任java的垃圾回收机制,而我坚信他setVisible(View.Gone)便觉得view不存在的方法会对开发带了破坏性的阻碍,因此折中选择了一下……class