码迷,mamicode.com
首页 > 编程语言 > 详细

java之坑-----List中的重复添加同一对象

时间:2015-06-30 00:02:15      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

java中List的add方法不检查List中是否含有已加入项

java中List的add方法不检查List中是否含有已加入项

java中List的add方法不检查List中是否含有已加入项

重要事情说三遍

List中添加的是引用,而且不检查是否已经加入list

这也就意味着:如果管理一堆循环使用的对象,对list的存放操作不应该是链式而应该是栈式,不然的话随着链的推进实际上可供使用的对象会被挤入垃圾堆然后被回收掉,列表看起来大小变化不大但是实际上只剩不多的实际引用对象,而对该对象的任何操作(如设置可见属性或者设置值)都会给list的使用带来不可估量的影响

而且每次添加入列表,如果对于列表中的元素有唯一性要求的话(一般都有吧)需要检查是否已经存在于列表中。

下附测试代码:

 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:

 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不存在的方法会对开发带了破坏性的阻碍,所以折中选择了一下……

 

java之坑-----List中的重复添加同一对象

标签:

原文地址:http://www.cnblogs.com/SproutFicF/p/4609055.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!