黑马程序员技术交流社区
标题:
List集合感想
[打印本页]
作者:
zcbyzcb
时间:
2013-6-12 20:46
标题:
List集合感想
这两天学习list集合,其中ArrayList和LinkedList中的contains方法都用到了对象的equals方法,equals方法的确是一个神器呀,完全可以按照自己的方式,比较任何对象。上一个自己写的删除ArrayList中的重复元素。虽然和老师的差不多,呵呵。
import java.util.*;
/*
去除自定义对象的重复元素,如人的姓名,年龄相等则视为同一元素。
*/
class ArrayListTest2
{
public static void main(String[] args)
{
ArrayList al=new ArrayList();// 建立一个ArrayList容器
Person p1=new Person("Jack",20);
Person p2=new Person("Jim",20);
Person p3=new Person("Jimmy",21);
Person p4=new Person("Jack",20);
Person p5=new Person("Jack",20);
//向容器中添加元素
al.add(p1);
al.add(p2);
al.add(p3);
al.add(p4);
al.add(p5);
//创建一个迭代器
Iterator it=al.iterator();
while(it.hasNext())
{
print((Person)it.next()); //打印al中的元素,自己定义的print方法
}
System.out.println("===============");
al=uniqueEle(al);
it=al.iterator();
while(it.hasNext())
{
print((Person)it.next());
}
}
public static ArrayList uniqueEle(ArrayList al)//去除重复元素
{
ArrayList list=new ArrayList(); //新建一个容器用于存放去除重复后的对象
Iterator it=al.iterator();
while(it.hasNext())
{
//Person p=(Person)it.next();
Object obj=it.next();
if(!list.contains(obj))
{
list.add(obj);
}
}
return list;
}
public static void print(Person p)// 打印Person信息
{
System.out.println(p.getName()+"-----"+p.getAge());
}
}
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;
}
public boolean equals(Object obj)//经典之处,重写equals方法
{
if(!(obj instanceof Person))
{
return false;
}
Person p=(Person)obj;
return this.name.equals(p.name) && this.age==p.age;
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2