前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java之学习去除ArrayList中重复自定义对象元素

java之学习去除ArrayList中重复自定义对象元素

作者头像
吾爱乐享
发布2018-07-12 17:44:30
1.6K0
发布2018-07-12 17:44:30
举报
文章被收录于专栏:吾爱乐享吾爱乐享

结果示意图:

前言:

很多时候或者很多项目中都会遇到集合中重复的部分,如何去除这些重复的部分呢?接下来小编就用创建新集合的方式去除集合中重复的部分。

原理:

原理就是创建新的集合 把旧的集合复制到新的集合中来,做一个判断,如果插入新的集合存在旧的集合中的元素就抛弃,如此循环添加,就可以去除掉重复的元素

注意:自定义对象重复,需要重写equals()方法

方法一:

利用新集合的方法去除重复java之学习去除ArrayList集合中重复字符串元素方式

案例代码:


package com.fenxiangbe.list;

import java.util.ArrayList;

import java.util.Iterator;

import com.fenxiangbe.bean.Person;

public class Demo_ArrayList {

/**

* public boolean equals(Object obj) {

Person p = (Person)obj;

return this.name.equals(p.name) && this.age == p.age;

}

*/

@SuppressWarnings(“unchecked”)

public static void main(String[] args) {

ArrayList l1 = new ArrayList();

l1.add(new Person(“张三”, 23));

l1.add(new Person(“张三”, 23));

l1.add(new Person(“李四”, 24));

l1.add(new Person(“李四”, 24));

l1.add(new Person(“王五”, 25));

l1.add(new Person(“王五”, 25));

l1.add(new Person(“王五”, 25));

l1.add(new Person(“王五”, 25));

System.out.println(l1);

System.out.println(“===========”);

ArrayList al = getPerson(l1);   //调用方法去除重复

System.out.println(al);

}

public static ArrayList getPerson(ArrayList l1){

ArrayList l2 = new ArrayList();

Iterator it = l1.iterator();

while (it.hasNext()){

Object p = it.next();

if(!l2.contains(p)){

l2.add(p);

}

}

return l2;

}

}


方法二:

直接利用remove方法删除,这个方法方便快捷,推荐使用,该方法也需要重写equals()方法

案例代码:


package com.fenxiangbe.list;

import java.util.ArrayList;

import java.util.Iterator;

import com.fenxiangbe.bean.Person;

public class Demo_ArrayList {

/**

* public boolean equals(Object obj) {

Person p = (Person)obj;

return this.name.equals(p.name) && this.age == p.age;

}

*/

@SuppressWarnings(“unchecked”)

public static void main(String[] args) {

ArrayList l1 = new ArrayList();

l1.add(new Person(“张三”, 23));

l1.add(new Person(“张三”, 23));

l1.add(new Person(“李四”, 24));

l1.add(new Person(“李四”, 24));

l1.add(new Person(“王五”, 25));

l1.add(new Person(“王五”, 25));

l1.add(new Person(“王五”, 25));

l1.add(new Person(“王五”, 25));

System.out.println(l1);

System.out.println(“===========”);

l1.remove(new Person(“张三”, 23)); //直接删除

System.out.println(l1);

}


利用以上两种方法都可以删除自定义对象重复元素,因为第二种方法代码少,简单快捷,很多地方都用第二种方法去重,推荐使用

Person类案例代码:


​package com.fenxiangbe.bean;

public class Person {

private String name;

private int age;

public Person() {

super();

}

public Person(String name, int age) {

super();

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

@Override

public String toString() {

return “Person [name=” + name + “, age=” + age + “]”;

}

@Override

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + age;

result = prime * result + ((name == null) ? 0 : name.hashCode());

return result;

}

@Override

public boolean equals(Object obj) {

Person p = (Person)obj;

return this.name.equals(p.name) && this.age == p.age;

}

}

欢迎关注我的大鱼号:吾爱乐享 微信公众号:vipjc5

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-10-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
  • 原理:
  • 方法一:
  • 方法二:
  • Person类案例代码:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档