黑马程序员技术交流社区
标题:
集合去重
[打印本页]
作者:
xiaoqiang01
时间:
2015-7-11 22:35
标题:
集合去重
/**
遍历人员档案,去除重复人员(同姓名同年龄)
*/
import java.util.*;
class Person
//定义人员类
{
private String name;
private int age;
Person(String name,int age)
{
this.name=name;
this.age=age;
}
public boolean equals(Object obj)
/*
重写equals方法,比较两个人对象的姓名和年龄判断是否同一人
注意:
在List集合中,contains和remove方法的低层都是equals方法
所以,重写了equals方法后,contains和remove方法也会改变
例如此时,contains方法就是查询集合中是否有指定对象同姓名年龄的对象
*/
{
if (!(obj instanceof Person) )
{
return false;
}
//instanceof是判断obj是否是Person的实例
//换句话说,判断obj是否可以转型为Person
Person p=(Person) obj;
return this.name.equals(p.name)&&this.age==p.age;
}
public void sopPerson()
{
Person.sop("name:"+name+" ,age:"+age);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
class Out
{
private ArrayList per;
ArrayList per_n=new ArrayList();
Out()
//构造函数录入原名单
{
per=new ArrayList();
per.add(new Person("jia",18));
per.add(new Person("yi",18));
per.add(new Person("jia",23));
per.add(new Person("jia",18));
per.add(new Person("bin",18));
per.add(new Person("yi",18));
per.add(new Person("bin",18));
per.add(new Person("jia",20));
show(per);
}
public void outPerson()
//去除相同人员的方法
{
Iterator it=per.iterator();
//跌送提取集合对象
while (it.hasNext())
{
Person p=(Person) it.next();
//next返回的是Object对象
//要使用Person中方法,需要向下转型
if (!per_n.contains(p))
//equals方法已经重写,contains也有了新的功能
{
per_n.add(p);
}
}
Person.sop("-------------------------------");
show(per_n);
}
public void show(ArrayList per)
//遍历集合对象方法
{
Iterator it=per.iterator();
while (it.hasNext())
{
Person p=(Person)it.next();
p.sopPerson();
}
}
}
class ArrayListDemo
{
public static void main(String[] args)
{
new Out().outPerson();
}
}
复制代码
作者:
房东告诉对方
时间:
2015-7-16 07:56
学习了学习了
作者:
fantianfei
时间:
2015-7-16 08:39
集合里的啊。
作者:
huangjiawei
时间:
2015-7-16 09:35
可以的。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2