吾爱乐享
个人学习网站

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) 打赏
未经允许不得转载:吾爱乐享 » java之学习去除ArrayList中重复自定义对象元素

评论 抢沙发

评论前必须登录!

 

推荐免费资源共享,个人经验总结学习

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏