/*
需求:
ArrayList中存放对象,去除其中相同的对象;
思路:
1.创建对象
2.把对象加入到ArrayList中
3.创建一个新的ArrayList,遍历ArrayList,如果新的没有包含,就加入到新的中去;
注意:需要覆盖Object的equals(),因为它比较的是地址,这里需要比较的是内容;
在字符串中,equals()比较的是内容,在Object类,比较的是对象(地址);
*/
package arrayListTest2;
import java.util.*;
class ArrayListTest2
{
public static void main(String[] args)
{
ArrayList arraylist=new ArrayList();
arraylist.add(new Person("zhangsan",30));
arraylist.add(new Person("lisi",31));
arraylist.add(new Person("wangwu",32));
arraylist.add(new Person("lisi",30));
arraylist.add(new Person("wangwu",32));
arraylist=singleElement(arraylist);
Iterator it=arraylist.iterator();
while(it.hasNext())
{
Object obj=it.next();
Person p=(Person)obj;
System.out.println(p.getName()+"---"+p.getAge());
}
}
//遍历,如果新创建的ArrayList没有包含,就加入;
public static ArrayList singleElement(ArrayList al)
{
ArrayList al2=new ArrayList();
Iterator it=al.iterator();
while(it.hasNext())
{
//注意:每次it.next()都会指到下一元素,因此要先用变量保存起来;
Object obj=it.next();
//System.out.println(it.next());
if(!al2.contains(obj))
{
al2.add(obj);
}
}
return al2;
}
}
//Person类
class Person
{
private String name;
private int age;
//构造方法
Person(String name,int age)
{
this.name=name;
this.age=age;
}
//获取姓名
public String getName()
{
return name;
}
//获取年龄
public int getAge()
{
return age;
}
//重载equals()
public boolean equals(Object obj)
{
if(obj instanceof Person)
{
Person p=(Person)obj;
return this.name.equals(p.name) && this.age==p.age;
}
else
return false;
}
}
ArrayList中相同元素的去除
最新推荐文章于 2023-06-25 19:31:12 发布