java list是不是唯一的_java之坑-----List中的重复添加同一对象

标签:

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

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

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

重要事情说三遍

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

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

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

下附测试代码:

1 fucker b = newfucker();2 fucker a = newfucker();3 a.Oops();4 b.Oops();5

6 List 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 classfucker {2 private int value=0;3

4 public voidfuck() {5 System.out.println("OOOO!");6 System.out.println(value);7 value = 0;8 }9

10 public voidOops() {11 value = 1;12 System.out.println("Changed!");13 }14

15 }

其实一般来说这种对象应该是不用管理的,但是师兄不信任java的垃圾回收机制,而我坚信他setVisible(View.Gone)便以为view不存在的方法会对开发带了破坏性的阻碍,所以折中选择了一下……

标签:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值