ArrayList中元素判定相等方法
来源:互联网 发布:ucsc数据库预测乙酰化 编辑:程序博客网 时间:2024/05/15 17:12
import java.util.ArrayList;public class ArrayListTest { public static void main(String[] args) { ArrayList<Teacher> arr = new ArrayList<>(); //创建一个Teacher类 Teacher tea = new Teacher("lisi", 16); arr.add(tea); //输出集合长度 System.out.println(arr.size()); System.out.println(arr.remove(tea)); System.out.println(arr.size()); }}class Teacher { private String name; private int age; public Teacher() { } public Teacher(String name, int age) { this.name = name; this.age = age; } @Override public boolean equals(Object obj){ return false; }}
运行上面这段程序会发现在集合中删除同一个元素失败了,ArrayList的remove(该方法为参数为Object对象)方法并没有将Teacher对象删除。而将其中equals方法写为:
@Override public boolean equals(Object obj){ Teacher tea = (Teacher)obj; return this.name.equals(tea.name) && this.age == tea.age; }集合中的元素就成功删除了。
根据ArrayList源码中remove方法的实现。如下:
public boolean remove(Object o) { if (o == null) { for (int index = 0; index < size; index++) if (elementData[index] == null) { fastRemove(index); return true; } } else { for (int index = 0; index < size; index++) if (o.equals(elementData[index])) { fastRemove(index); return true; } } return false; }
可以发现调用的是存储类的equals方法,如果该类重写了equals方法,并直接返回false,调用remove方法将不会删除元素。
因此,在判断ArrayList集合中remove一个元素时,一定要知道该集合中类的equals方法,才可以判断集合中元素是否移除成功。
0 0
- ArrayList中元素判定相等方法
- Java:ArrayList中的元素相等判断
- python 字典元素判定方法
- java中5种打印arraylist元素的方法
- ArrayList中元素排序方法:Collections.sort(list)
- 集合ArrayList中删除重复元素两种方法
- 判定一个list<int>中的元素和一个vector<int>中的元素是否相等
- 比较一个数组中,是否有相等的元素的不同方法比较
- java中数据结构Bitmap查找相等元素
- 删除ArrayList中重复元素
- 删除ArrayList中重复元素
- 删除ArrayList中重复元素
- 删除ArrayList中重复元素
- 判定数组中是否存在重复元素
- ArrayList中常用方法
- bc+判定正五边形,由于是保证凸性了只需判定边相等+枚举方法好
- Java ArrayList删除特定元素的方法
- ArrayList 中 contains remove 判断元素相同 底层调用了 equals方法
- LCA(离线算法)
- git学习
- hdu4300 Clairewd’s message
- 创建和销毁对象(一)
- LeetCode 80:Remove Duplicates from Sorted Array II
- ArrayList中元素判定相等方法
- 三种方法解决浮动元素父容器高度自适应问题
- Redis海量数据java测试代码
- jd—gui的不能全部翻译
- leetcode -Swap Nodes in Pairs
- arcgis server注册ecp时,提示“所选文件中未发现有效功能”解决办法
- poj-3253哈夫曼树
- spring xml解析异常
- SourceTree 管理两个远程仓库(一)