package cn.itcast_02;
import java.util.ArrayList;
import java.util.Iterator;
/*
* 需求:去除ArrayList集合中的重复自定义对象
*
* 我们按照字符串一样的操作,发现问题了
*
* 通过简单的分析,我们知道了问题出在了判断上。
*
* 而这个判断功能是集合自己提供的,所以我们如果想很清楚的知道它
* 是如何判断的,就因该看原码
* contains()方法的底层依赖的是equals()方法。
* 而我们学生类中没有equals()方法,这个时候,就默认使用的是它父类的Object的equals()方法
* Object()方法的equals()方法默认比较的是地址值,所以,它们都进去了因为new的东西,地址值都不同
* 所以我们要重写equals()方法。
*/
public class 去除ArrayList集合中的重复自定义对象 {
public static void main(String[] args) {
//创建集合对象
ArrayList array = new ArrayList();
//创建学生对象
Student s1 = new Student("貂蝉",19);
Student s2 = new Student("西施",14);
Student s3 = new Student("陈圆圆",19);
Student s4 = new Student("王昭君",16);
Student s5 = new Student("陈圆圆",18);
Student s6 = new Student("陈圆圆",18);
//添加元素
array.add(s1);
array.add(s2);
array.add(s3);
array.add(s4);
array.add(s5);
array.add(s6);
//创建新集合
ArrayList newarray = new ArrayList();
//遍历旧集合,获得每一个元素
Iterator it = array.iterator();
while(it.hasNext()) {
Student s =(Student)it.next();
//那这个集合去找新集合,看看有没有
if(!newarray.contains(s)) {
newarray.add(s);
}
}
//遍历集合
for(int x =0;x<newarray.size();x++) {
Student s =(Student)newarray.get(x);
System.out.println(s.getName()+"---"+s.getAge());
}
}
}
去除ArrayList集合中的重复自定义对象
最新推荐文章于 2022-08-19 11:44:04 发布