结果示意图:
前言:
很多时候或者很多项目中都会遇到集合中重复的部分,如何去除这些重复的部分呢?接下来小编就用创建新集合的方式去除集合中重复的部分。
原理:
原理就是创建新的集合 把旧的集合复制到新的集合中来,做一个判断,如果插入新的集合存在旧的集合中的元素就抛弃,如此循环添加,就可以去除掉重复的元素
注意:自定义对象重复,需要重写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
评论前必须登录!
注册