1. 实现方式
思路:采用的方式和去除字符串中重复值一样。
1>:创建一个新的集合;
2>:然后遍历旧的集合,获取旧集合中的每一个元素;
3>:然后判断:如果新集合中不包含该元素,就添加;
4>:然后遍历新集合就可以;
2. 实现过程遇到的问题
如果直接按照和去除字符串中重复值代码一样去做,不能达到去除重复对象的效果,必须在自定义对象 Student对象中重新equals()方法即可,直接用快捷键生成即可;
3. 具体代码如下
1>:自定义对象Student类如下:
/**
* Email: 2185134304@qq.com
* Created by Novate 2018/5/29 15:33
* Version 1.0
* Params:
* Description: 自定义 Student对象类,并且重新equals()方法
*/
public class Student {
private String name;
private int age;
public Student(String name, int age) {
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 boolean equals(Object object) {
if (this == object) return true;
if (object == null || getClass() != object.getClass()) return false;
Student student = (Student) object;
if (age != student.age) return false;
return name.equals(student.name);
}
@Override
public int hashCode() {
int result = name.hashCode();
result = 31 * result + age;
return result;
}
}
2>:造一个新的集合,遍历旧的集合,获取旧集合中每一个元素,判断新集合中是否包含该元素,如果不包含,就添加;
/**
* 去除自定义对象的重复值
*/
private static void arrayListTest() {
// 创建集合 ArrayList对象
ArrayList<Student> arrayList = new ArrayList<>() ;
// 创建元素
Student s1 = new Student("王子文", 28);
Student s2 = new Student("林心如", 22);
Student s3 = new Student("林志玲", 20);
Student s4 = new Student("林忆莲", 18);
Student s5 = new Student("王子文", 18);
Student s6 = new Student("王子文", 28);
// 添加元素
arrayList.add(s1) ;
arrayList.add(s2) ;
arrayList.add(s3) ;
arrayList.add(s4) ;
arrayList.add(s5) ;
arrayList.add(s6) ;
// 采用方式就是:新建一个集合,遍历旧的集合,获取旧集合中每一个元素,然后判断如果新集合中不包含元素,就添加,然后遍历新集合就可以
ArrayList<Student> newArrayList = new ArrayList<Student>() ;
// 遍历旧的集合
for (int i = 0; i < arrayList.size(); i++) {
// 获取旧集合中所有元素
Student s = arrayList.get(i);
// 判断:如果新集合中不包含旧集合中的元素,就添加
if (!newArrayList.contains(s)){
newArrayList.add(s) ;
}
}
// 遍历新的集合
for (int i = 0; i < newArrayList.size(); i++) {
Student student = newArrayList.get(i);
System.out.println(student.getName() + "---" + student.getAge());
/*输出结果:
王子文---28
林心如---22
林志玲---20
林忆莲---18
王子文---18*/
}
}