A:案例演示
* 需求:ArrayList去除集合中自定义对象元素的重复值(对象的成员变量值相同)
* B:注意事项
* 重写equals()方法的
contains方法判断是否包含,底层依赖的是equals方法,equals比较的是地址值,重写后比较属性值
remove方法是否删除,底层依赖的是equals方法,索引也要重写
主题测试代码:
import java.util.ArrayList;
import java.util.Iterator;
import com.heima.bean.person;
@SuppressWarnings({ "rawtypes", "unchecked" })
public class Demo2_ArrayList {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(new person("张三",23));
list.add(new person("张三",23));
list.add(new person("张三",23));
list.add(new person("李四",24));
list.add(new person("李四",24));
list.add(new person("李四",24));
System.out.println(list);
ArrayList newList = getSingle(list);
System.out.println(newList);
}
/*
* 去除重复
* 1,返回ArrayList
* 2,参数列表ArrayList
*/
public static ArrayList getSingle(ArrayList list) {
ArrayList newList = new ArrayList();//创建一个新集合
Iterator it = list.iterator();//获取迭代器
while(it.hasNext()) {
Object obj=it.next();//判断老集合中是否有元素
System.out.println(obj);//将每一个元素临时记录住
if(!newList.contains(obj)) {//如果新集合中不包含该元素
newList.add(obj);//将该元素添加到新集合中
}
}
return newList;//将新集合返回
}
}
person类:
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;
}
}