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方法相关推荐

  1. Java中类、常量、变量、方法名等命名规则

    Java中类.常量.变量.方法名等命名规则 命名规则: 命名由字母.数字.下划线.美元符号($)构成. 命名不可以数字作为开头. 长度无限制,但不可存在空格. 大小写所表述内容含义不同. 命名不可与J ...

  2. “ Error:(1, 1) java: 非法字符: ‘\ufeff‘ ”错误的解决方法

    前言:今天为了做作业,在 github 上面下载了个项目,然后在运行项目时发现报错,在此记录一下 " Error:(1, 1) java: 非法字符: '\ufeff' "错误的解 ...

  3. java 匿名list,java创造匿名对象的两种方法

    在java中有时候需要一些匿名对象的使用.可能有些小伙伴拿还不会创造,其实我们在学习一些方法时都或多或少的接触过.本篇所要讲到的创造匿名对象总结了两种方法,分别是静态工具方法和Lambda表达式,我们 ...

  4. Java遍历Map对象的四种方法

    在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHa ...

  5. 将Java程序变成可执行文件的一个简单方法

    将Java程序变成可执行文件的一个简单方法 运行Java程序(SWING或SWT的桌面程序)可以直接执行.class文件或将所有的.class文件及相关的其他文件压缩成.jar文件,然后使用javaw ...

  6. 完美解决Invalid layout of java.lang.String at value问题的方法

    完美解决Invalid layout of java.lang.String at value问题的方法 参考文章: (1)完美解决Invalid layout of java.lang.String ...

  7. java.util.ConcurrentModificationException异常原因及解决方法

    java.util.ConcurrentModificationException异常原因及解决方法 参考文章: (1)java.util.ConcurrentModificationExceptio ...

  8. Java compiler level does not match解决方法

    Java compiler level does not match解决方法 参考文章: (1)Java compiler level does not match解决方法 (2)https://ww ...

  9. java.lang.IllegalArgumentException异常处理的一种方法

    java.lang.IllegalArgumentException异常处理的一种方法 参考文章: (1)java.lang.IllegalArgumentException异常处理的一种方法 (2) ...

  10. 超详细解读Java接口:模块通信协议以及默认方法和静态方法

    有不少学习Java的同学一直有个疑问,不仅在初学者中很普遍,连许多经验丰富的老手也很难表述清楚,那就是:Java接口到底是什么? 来看看孙鑫老师的讲解,本文干货含量拉满,这可能是距离你深入理解Java ...

最新文章

  1. R语言使用skimr包的skim函数查看整个dataframe数据集的summary信息、统计汇总信息(Summarize a whole dataset)
  2. JVM内存管理------GC算法精解(五分钟教你终极算法---分代搜集算法)
  3. 腾讯alloyteam团队前端代码规范(记录)
  4. LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation 论文笔记
  5. 毫秒间完成行为分析,飞猪端智能技术实践!
  6. java获取网卡正真的mac_java获取网卡的mac地址
  7. 在vue.js中如何导出Excel表格
  8. linux学习入门之Linux系统目录结构
  9. Qt---打印系统时间,毫秒级
  10. Spotfire 聚合筛选 会污损行数据
  11. Ghost Win10 企业版LTSC 2020.05(32位+64位)
  12. 文件上传漏洞—简单利用(墨者学院靶场)
  13. Android bitmap.recycle()导致trying to use a recycled bitmap报错分析
  14. DOM元素 DAY17
  15. 迅捷pdf转换器:如何将pdf转换成word
  16. java sort 降序_详解Java sort()数组排序(升序和降序)
  17. UE4快速实现涂鸦功能
  18. 中国首个进入谷歌 GSoC 的开源项目: Casbin, 2022 年预选生招募~
  19. 人工智能面试总结-回归
  20. python容器类型——字典{dict}

热门文章

  1. 常用简单算法-质因数分解
  2. 中信证券的丑恶行经(南京营业部)
  3. 一文详解 Ansible 的自动化运维
  4. Android一款简单的天气APP
  5. 感知世界触景生情——增强现实技术
  6. 加了!important没用?失效了?记录一个一直被我忽视的关于!important提升权重的问题
  7. 用计算机打出丑八怪,丑八怪计算器谱子 丑八怪歌词是什么意思
  8. asp微信扫一扫代码,用asp写的实现调用微信扫一扫功能
  9. nodejs快速搭建MQTT服务器
  10. 虚拟机下安装Fedora教程