Java_基础—去除ArrayList中重复自定义对象元素
新建一个Person类,属性为name, age
Alt + Shift +S → C 空参构造
Alt + Shift +S → O 有参构造
Alt + Shift +S → R 生成set和get 方法
Alt + Shift +S → S 生成toString方法
package com.soar.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 boolean equals(Object obj) {
Person p = (Person)obj;
return this.name.equals(p.name) && this.age == p.age;
}
}
新建一个ArrayList类
package com.soar.list;
import java.util.ArrayList;
import java.util.Iterator;
import com.soar.bean.Person;
@SuppressWarnings({ "rawtypes", "unchecked","unused" })
public class Demo2_ArrayList {
/*
* * A:案例演示
* 需求:ArrayList去除集合中自定义对象元素的重复值(对象的成员变量值相同)
* B:注意事项
* 重写equals()方法
* contains()判断是否包含,底层依赖的是equals()方法
* remove()判断是否删除,底层依赖的也是equals()方法
* 如果不重写equals()方法,则会出错
*/
public static void main(String[] args) {
ArrayList list = new ArrayList(); //创建集合对象
list.add(new Person("张三",23));
list.add(new Person("张三",23));
list.add(new Person("李四",24));
list.add(new Person("李四",24));
//ArrayList newlist = getSingle(list);
//System.out.println(newlist); //[Person [name=张三, age=23], Person [name=李四, age=24]]
list.remove(new Person("张三",23));
System.out.println(list);
}
/*
* 创建新集合将重复元素去掉
* 1.明确返回值类型,返回ArrayList
* 2.明确参数列表ArrayList
* 分析:
* 1.创建新集合
* 2.根据传入的集合(老集合)获取迭代器
* 3.遍历老集合
* 4.通过新集合判断是否包含老集合的元素,如果包含就不添加,不包含就添加
*/
public static ArrayList getSingle(ArrayList list){
ArrayList newList = new ArrayList(); //1.创建新集合
Iterator it = list.iterator(); //2.根据传入的集合(老集合)获取迭代器
while(it.hasNext()){ //3.遍历老集合
Object obj = it.next(); //记录住每一个元素
if(!(newList.contains(obj))){ //如果新集合中不包含老集合中的元素
newList.add(obj); //将该元素进行添加
}
}
return newList;
}
}