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

结果示意图:

前言:

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

原理:

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

注意:自定义对象重复,需要重写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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android开发指南

12:集合map、工具类

37080
来自专栏Bingo的深度学习杂货店

Q35 Search Insert Position

Given a sorted array and a target value, return the index if the target is found...

30070
来自专栏LanceToBigData

JavaSE集合(八)之Map

前面给大家介绍了集合家族中的Collection家族,这一篇给大家分享的是集合中的另一个家族就是Map家族。以前的时候学习Map的时候没有很认真的去学习,我觉得...

24080
来自专栏黑泽君的专栏

java基础学习_集合类02_List的子类、泛型、增强for循环、静态导入、可变参数_day16总结

============================================================================= ==...

7710
来自专栏章鱼的慢慢技术路

顺序表示的线性表——顺序表

23540
来自专栏黑泽君的专栏

java基础学习_集合类04_Map接口、Collections工具类_day18总结

============================================================================= ==...

9110
来自专栏Java帮帮-微信公众号-技术文章全总结

Java基础-17(01)总结,TreeSet,LinkHashSet

(3)TreeSet集合 A:底层数据结构是红黑树(是一个自平衡的二叉树) B:保证元素的排序方式 a:自然排序(元素具备比较性) 让元素所属的类实现C...

33860
来自专栏浪淘沙

java学习day07 常用API

2018.6.11 1.object 所有类的父类 toString 打印对象的地址值 hashCode 对象的存储位置的算法 ...

14430
来自专栏武培轩的专栏

剑指Offer-和为S的两个数字

题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。 输出描述: 对应每...

33640
来自专栏IT可乐

Java 集合详解

一、集合的由来   通常,我们的程序需要根据程序运行时才知道创建多少个对象。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的...

31290

扫码关注云+社区

领取腾讯云代金券