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 ...
随机推荐
- Android 播放gif图片
Android的原生控件并不支持播放GIF格式的图片.我们都知道,在Android中如果想要显示一张图片,可以借助ImageView控件来完成,但是如果将一张GIF图片设置到ImageView里,它只 ...
- Bootstrap 静态分页 和 jquery_pagination插件 动态分页
第一种Bootstrap 实例 - 默认的分页 <!DOCTYPE html> <html> <head> <title>Bootstrap 实例 - ...
- 禁用谷歌字体解决WordPress访问速度过慢问题
这几天打开网站的时候发现突然变慢了,一直等待加载fonts.googleapis.com,搜索了一下发现很多wordpress网站都出现了 这种现象,原来是因为今日谷歌全线退出中国,貌似谷歌.Gmai ...
- Ubuntu Codeblocks Installation
Download and Installation sudo add-apt-repository ppa:damien-moore/codeblocks sudo apt update sudo a ...
- nginx+keepalived+tomcat之tomcat性能调优
body{ font-family: Nyala; font-size: 10.5pt; line-height: 1.5;}html, body{ color: ; background-color ...
- TeXLive安装过程
Linux系统下TeXLive2016安装教程:http://www.linuxidc.com/Linux/2016-08/133913.htm 安装完成后,在当前用户的 ~/.bashrc 中加入如 ...
- information_schema.triggers 学习
mysql实例中的每一个trigger 对应到information_schema.triggers 中有一行 1.information_schema.triggers 表的常用列: 1.trigg ...
- BZOJ 2876 骑行川藏
http://www.lydsy.com/JudgeOnline/problem.php?id=2876 拉格朗日乘数法:f'+入g'=0,f为函数的导数,g为限制条件的导数. 思路:E=Σki*si ...
- C# Environment类_获取程序所在机器信息
一.属性 CommandLine 获取该进程的命令行.CurrentDirectory 获取或设置当前工作目录的完全限定路径.ExitCode 获取或设置进程的退出代码.HasShutdownSta ...
- House Robber II 解答
Question After robbing those houses on that street, the thief has found himself a new place for his ...