java list的contains,list的contains方法
2015-09-07 11:37:57
先来简单说一下list的contains方法的作用,它的目的就是查看给定元素是否在list中存在,所以经常用于去除重复记录。用下面一个例子来说明一下。
从数据库中查询出满足一系列条件的记录,然后以对象的形式封装到List中去。假设有两个条件A和B,满足A记录的称为ListA,满足B记录的称为ListB,现在要将ListA和ListB合并到一个List中区,此时两个记录集中可能会含有相同的记录,所以我们要过滤掉重复的记录。假设存在的对象为User对象
List list = new ArrayList();
if(ListA!=null){
Iterator it= ListA.iterator();
while(it.hasNext()){
list.add((User)it.next());
}
}
if(ListB!=null){
Iterator it= ListB.iterator();
while(it.hasNext()){
User us=(User)it.next();
if(!list.contains(us))
list.add(us);
}
}
首先我们将ListA中的对象全部装入到list中,然后在装入ListB中对象的
时候对ListB中的每个元素进行一下判断,看list中是否已存在该元素,这里我们使用List接口的contains()方法,下面来看一下他的原理:
list.contains(us),系统会对list中的每个元素e调用us.equals(e),方法,加入list中有n个元素,那么会调用n次us.equals(e),只要有一次us.equals(e)返回了true,那么list.contains(us)返回true,否则返回false。因此为了很好的使用contains()方法,我们需要重新定义下User类的equals方法,根据我们的业务逻辑,如果两个User对象的Id相同,那么我们认为它们代表同一条记录,于是equals方法定义如下:
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
final User other = (User) obj;
if(this.getId()!=other.getId())
return false;
return true;
}
这样只要ListB中有一条记录的Id和list中的某条记录的Id
相等,那么我们就认为该记录已存在,不再将它放入list,这样就避免了重复记录的存在。
java list的contains,list的contains方法相关推荐
- Java中类、常量、变量、方法名等命名规则
Java中类.常量.变量.方法名等命名规则 命名规则: 命名由字母.数字.下划线.美元符号($)构成. 命名不可以数字作为开头. 长度无限制,但不可存在空格. 大小写所表述内容含义不同. 命名不可与J ...
- “ Error:(1, 1) java: 非法字符: ‘\ufeff‘ ”错误的解决方法
前言:今天为了做作业,在 github 上面下载了个项目,然后在运行项目时发现报错,在此记录一下 " Error:(1, 1) java: 非法字符: '\ufeff' "错误的解 ...
- java 匿名list,java创造匿名对象的两种方法
在java中有时候需要一些匿名对象的使用.可能有些小伙伴拿还不会创造,其实我们在学习一些方法时都或多或少的接触过.本篇所要讲到的创造匿名对象总结了两种方法,分别是静态工具方法和Lambda表达式,我们 ...
- Java遍历Map对象的四种方法
在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHa ...
- 将Java程序变成可执行文件的一个简单方法
将Java程序变成可执行文件的一个简单方法 运行Java程序(SWING或SWT的桌面程序)可以直接执行.class文件或将所有的.class文件及相关的其他文件压缩成.jar文件,然后使用javaw ...
- 完美解决Invalid layout of java.lang.String at value问题的方法
完美解决Invalid layout of java.lang.String at value问题的方法 参考文章: (1)完美解决Invalid layout of java.lang.String ...
- java.util.ConcurrentModificationException异常原因及解决方法
java.util.ConcurrentModificationException异常原因及解决方法 参考文章: (1)java.util.ConcurrentModificationExceptio ...
- Java compiler level does not match解决方法
Java compiler level does not match解决方法 参考文章: (1)Java compiler level does not match解决方法 (2)https://ww ...
- java.lang.IllegalArgumentException异常处理的一种方法
java.lang.IllegalArgumentException异常处理的一种方法 参考文章: (1)java.lang.IllegalArgumentException异常处理的一种方法 (2) ...
- 超详细解读Java接口:模块通信协议以及默认方法和静态方法
有不少学习Java的同学一直有个疑问,不仅在初学者中很普遍,连许多经验丰富的老手也很难表述清楚,那就是:Java接口到底是什么? 来看看孙鑫老师的讲解,本文干货含量拉满,这可能是距离你深入理解Java ...
最新文章
- R语言使用skimr包的skim函数查看整个dataframe数据集的summary信息、统计汇总信息(Summarize a whole dataset)
- JVM内存管理------GC算法精解(五分钟教你终极算法---分代搜集算法)
- 腾讯alloyteam团队前端代码规范(记录)
- LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation 论文笔记
- 毫秒间完成行为分析,飞猪端智能技术实践!
- java获取网卡正真的mac_java获取网卡的mac地址
- 在vue.js中如何导出Excel表格
- linux学习入门之Linux系统目录结构
- Qt---打印系统时间,毫秒级
- Spotfire 聚合筛选 会污损行数据
- Ghost Win10 企业版LTSC 2020.05(32位+64位)
- 文件上传漏洞—简单利用(墨者学院靶场)
- Android bitmap.recycle()导致trying to use a recycled bitmap报错分析
- DOM元素 DAY17
- 迅捷pdf转换器:如何将pdf转换成word
- java sort 降序_详解Java sort()数组排序(升序和降序)
- UE4快速实现涂鸦功能
- 中国首个进入谷歌 GSoC 的开源项目: Casbin, 2022 年预选生招募~
- 人工智能面试总结-回归
- python容器类型——字典{dict}