java之坑-----List中的重复添加同一对象
java中List的add方法不检查List中是否含有已加入项
java中List的add方法不检查List中是否含有已加入项
java中List的add方法不检查List中是否含有已加入项
重要事情说三遍
List中添加的是引用,而且不检查是否已经加入list
这也就意味着:如果管理一堆循环使用的对象,对list的存放操作不应该是链式而应该是栈式,不然的话随着链的推进实际上可供使用的对象会被挤入垃圾堆然后被回收掉,列表看起来大小变化不大但是实际上只剩不多的实际引用对象,而对该对象的任何操作(如设置可见属性或者设置值)都会给list的使用带来不可估量的影响
而且每次添加入列表,如果对于列表中的元素有唯一性要求的话(一般都有吧)需要检查是否已经存在于列表中。
下附测试代码:
fucker b = new fucker();
fucker a = new fucker();
a.Oops();
b.Oops(); List<fucker> lbs = new ArrayList<>(); for (int i= 0;i<10;i++) {
lbs.add(a);
lbs.add(b);
} a.fuck();
for (int i=0;i<10;i++) {
lbs.get(0).fuck();
lbs.remove(lbs.get(0));
lbs.get(0).fuck();
lbs.remove(lbs.get(0));
}
fucker:
public class fucker {
private int value=0;
public void fuck() {
System.out.println("OOOO!");
System.out.println(value);
value = 0;
}
public void Oops() {
value = 1;
System.out.println("Changed!");
}
}
其实一般来说这种对象应该是不用管理的,但是师兄不信任java的垃圾回收机制,而我坚信他setVisible(View.Gone)便以为view不存在的方法会对开发带了破坏性的阻碍,所以折中选择了一下……
java之坑-----List中的重复添加同一对象的更多相关文章
- Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素-un
ylbtech-Java-Runoob-高级教程-实例-数组:10. Java 实例 – 查找数组中的重复元素 1.返回顶部 1. Java 实例 - 查找数组中的重复元素 Java 实例 以下实例 ...
- Java 去除 ArrayList 集合中的重复元素
// One practice package Collection; import java.util.ArrayList; import java.util.Iterator; // 去除 Arr ...
- Java如何在正则表达式中匹配重复单词?
在Java编程中,如何在正则表达式中匹配重复单词? 以下示例显示了如何使用regex.Matcher类的p.matcher()方法和m.group()方法在正则表达式中搜索重复的单词. package ...
- 剑指Offer编程题(Java实现)——数组中的重复数字
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...
- Java 去除List列表中的重复项
/** * Remove list duplicate item * * @param srcList * @return */ private static ArrayList<Resolve ...
- Java基础知识强化之集合框架笔记27:ArrayList集合练习之去除ArrayList集合中的重复字符串元素
1. 去除ArrayList集合中的重复字符串元素(字符串内容相同) 分析: (1)创建集合对象 (2)添加多个字符串元素(包含重复的) (3)创建新的集合 (4)遍历旧集合,获取得到每一个元素 (5 ...
- Java删除ArrayList中的重复元素
Java删除ArrayList中的重复元素的2种方法 ArrayList是Java中最常用的集合类型之一.它允许灵活添加多个null元素,重复的元素,并保持元素的插入顺序.在编码时我们经常会遇到那种必 ...
- java代码实现将集合中的重复元素去掉
package com.loaderman.test; import java.util.ArrayList; import java.util.LinkedHashSet; import java. ...
- java集合 collection-list-ArrayList 去除ArrayList集合中的重复元素。
import java.util.*; /* 去除ArrayList集合中的重复元素. */ class ArrayListTest { public static void sop(Object o ...
随机推荐
- 10 个十分难得的 javascript 开发经验
Javascript 的很多扩展的特性是的它变得更加的犀利, 同时也给予程序员机会创建更漂亮并且更让用户喜欢的网站. 尽管很多的开发人员都乐于颂扬 javascript,但是仍旧有人看到它的阴暗面. ...
- node.js 环境搭建
一 官网下载安装包 : 1.http://www.nodejs.org/download/ 选择相应的包进行安装 2.安装express : npm install -g express -gener ...
- 一级域名301重定向到www二级域名
301重定向有利于百度的搜索 例如一个域名 www.test.com如果不做设置会产生4个网址, (1)test.com(2)www.test.com(3)test.com/default.html( ...
- 根据查询结果创建新表create table .. as (select....)
一张表 student 查询数学和英语都是90分以上的同学,并创建一张新表 test1
- HDU ACM 题目分类
模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 104 ...
- StreamReader与StreamWriter
StreamReader实现了抽象基类TextReader类,而StreamWriter实现了抽象基类TextWriter.分别用于对流的读取与写入. 先从StreamReader说起 一.构造方法 ...
- Roy the Robber
Problem Description The aspiring Roy the Robber has seen a lot of American movies, and knows that th ...
- 如何理解 css3 的 perspective 属性
一.写在前面的话 最近想多了解一下CSS3的transform 3D效果,transform:英文直译就是转换,它可以实现旋转.缩放.位移等效果,听起来有没有觉得很酷的样子,狠狠的点这里来看看旋转和位 ...
- LeeCode-Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear only once. For examp ...
- poj 2356 Find a multiple(鸽巢原理)
Description The input contains N natural (i.e. positive integer) numbers ( N <= ). Each of that n ...