如果集合中的数据类型是基本数据类型,可以直接将list集合转换成set,就会自动去除重复的元素,这个就相对比较简单。

public class Test {

    public static void main(String[] args) {
List list = new ArrayList();
list.add(11);
list.add(12);
list.add(13);
list.add(14);
list.add(15);
list.add(11);
System.out.println(list); Set set = new HashSet();
List newList = new ArrayList();
set.addAll(list);
newList.addAll(set);
System.out.println(newList); } }

当list集合中存储的类型是对象类型的时候,我们就不能简单的只把list集合转换成set集合。

我们定义一个对象类:

public class People {

    private String name;
private String phoneNumber; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPhoneNumber() {
return phoneNumber;
} public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
} public People(String name, String phoneNumber) {
super();
this.name = name;
this.phoneNumber = phoneNumber;
} @Override
public String toString() {
return "People{" +
"name='" + name + ''' +
", phoneNumber='" + phoneNumber + ''' +
'}';
} }

当list集合中存储的是对象时,我们需要在对象的实体类中去重写equals()方法和hashCode()方法,如下:

public class People {

    private String name;
private String phoneNumber; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPhoneNumber() {
return phoneNumber;
} public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
} public People(String name, String phoneNumber) {
super();
this.name = name;
this.phoneNumber = phoneNumber;
} @Override
public String toString() {
return "People{" +
"name='" + name + ''' +
", phoneNumber='" + phoneNumber + ''' +
'}';
} @Override
public boolean equals(Object arg0) {
// TODO Auto-generated method stub
People p = (People) arg0;
return name.equals(p.name) && phoneNumber.equals(p.phoneNumber);
} @Override
public int hashCode() {
// TODO Auto-generated method stub
String str = name + phoneNumber;
return str.hashCode();
} }

test:

public static void main(String[] args) {
List<People> listPeople = new ArrayList<People>();
listPeople.add(new People("张三", "11111"));
listPeople.add(new People("张三", "22222"));
listPeople.add(new People("李四", "33333"));
listPeople.add(new People("张三", "22222")); Set<People> setData = new HashSet<People>();
setData.addAll(listPeople);
System.out.println("list:" + listPeople.toString());
System.out.println("set:" + setData.toString()); }

此时运行上面的test方法,去重就成功了。

List去重问题的更多相关文章

  1. JavaScript常见的五种数组去重的方式

    ▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 先来建立一个数组 var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN ...

  2. 数组去重 JS

    我说的数组去重是这样的: var arr = ['f', 'a',  'b', 'd', 'e', 'g']  ; var str='f'; 去除arr中的str 最简单的是遍历arr与str做比较, ...

  3. [Algorithm] 使用SimHash进行海量文本去重

    在之前的两篇博文分别介绍了常用的hash方法([Data Structure & Algorithm] Hash那点事儿)以及局部敏感hash算法([Algorithm] 局部敏感哈希算法(L ...

  4. JS去重及字符串奇数位小写转大写

    面试中经常会考到数组的去重.作为一名合格的前端开发者,不知道几种去重方法是在不应该.废话不多说直接开撸-- 一.indexOf()方法 实现思路:使用indexOf()方法来判断新数组中是否有这个值, ...

  5. js数组去重

    这就是数组去重了...var str=['hello','node','element','node','hello','blue','red'];var str1=[]; function firs ...

  6. [Hadoop]-从数据去重认识MapReduce

    这学期刚好开了一门大数据的课,就是完完全全简简单单的介绍的那种,然后就接触到这里面最被人熟知的Hadoop了.看了官网的教程[吐槽一下,果然英语还是很重要!],嗯啊,一知半解地搭建了本地和伪分布式的, ...

  7. 1.uniq去重命令讲解

    uniq命令: 常见参数: -c,--count *****      在每行旁边显示改行重复出现的次数 -d,--repeated        仅显示重复出现的行,2次或2次以上的行,默认的去重包 ...

  8. python list dict 去重的两种方式

    def dedupe(items, key=None): seen = set() for item in items: val = item if key is None else key(item ...

  9. js给数组去重写法

    数组为 var list =['A','B','A']; 法一:常规做法,新建list,给list添加元素,添加前判断是否包含 var removeRepeatItem = function(list ...

  10. 分享一种容易理解的js去重排序方法

    <script> var arr=[1,8,6,4,88,22,99,4,6,86,5,58,89,5]; //先使用sort()函数去重 var a=arr.sort(function ...

随机推荐

  1. python中,如何将字符串转换为数字(将数字转换为整型),字符串的10转换为整型的10,10.5转换为10

    说明: 在实际的应用过程中,有的时候可能会遇到字符串的10,需要将字符串的10转换为数字的10 在此记录下,通过int函数转换的过程. 操作过程: 1.将字符串转换为整型的10 >>> ...

  2. web java -- 连接池 -- 概述

    1. 连接池的实现原理 1. 创建连接池 首先要创建一个静态的连接池.这里的“静态”是指池中的连接时在系统初始化时就分配好的,并且不能够随意关闭.Java 提供了很多容器类可用来构建连接池,例如Vec ...

  3. JS 字符ASCII转换

    var a="1368628429"; String.fromCharCode( a.substring(a.length-1,1).charCodeAt())=>" ...

  4. 【netcore基础】MVC API全局异常捕捉中间件ExceptionHandlerMiddleWare

    项目中想通过统一的接口格式返回异常信息,而不是404 500等HTTP协议层的异常响应 例如 { , , "message":"用户名或密码不正确", &quo ...

  5. IOS 请求数据解析 XML 和 JSON

    好久没写文章了,回忆一下以前的内容记录一下吧. 这一段主要接触的就是数据解析,就说一下数据解析 现在数据解析一般解析两种数据 xml 和 JSON 那就从xml解析说起吧 xml解析需要用到一个类 N ...

  6. HandlerSocket介绍

    HandlerSocket的原理 HandlerSocket的应用场景: MySQL自身的局限性,很多站点都采用了MySQL+Memcached的经典架构,甚至一些网站放弃MySQL而采用NoSQL产 ...

  7. autodesk fbx sdk sample里面的工程无法调试解决方法

    1.项目属性->常规中的目标文件名改为1 2.链接器->调试中的生成程序数据库文件改成:$(OutDir)1.pdb 3.连接器->常规中的输出文件改成:$(OutDir)1.exe ...

  8. JSP页面嵌套乱码解决

    项目中审批过程需要将业务表单嵌套在审批的页面中.由于业务表单很多,前台已经axjx到了本次选择的表单的地址.本来做的就是把这个链接放在审批页面上,但现在需求的就是直接把这个biz表单嵌套在审批的页面中 ...

  9. fyzcms---相关文章推荐功能

    在用我写的fyzcms的做优化的时候,考虑到文章之间的权重集中,以及相互文章间的低耦合,所以设计了一个相关文章推荐的功能. 具体使用: <if condition="count($fi ...

  10. Android定时执行和停止某任务

    一.定义全局变量 int runCount = 0;// 全局变量,用于判断是否是第一次执行 Handler handlerCount = new Handler(); 二.创建Runnable Ru ...