A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaoqiang01 初级黑马   /  2015-7-11 22:35  /  391 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/**
遍历人员档案,去除重复人员(同姓名同年龄)
*/

  1. import java.util.*;
  2. class Person
  3. //定义人员类
  4. {
  5.         private String name;
  6.         private int age;
  7.         Person(String name,int age)
  8.         {
  9.                 this.name=name;
  10.                 this.age=age;
  11.         }
  12.         public boolean equals(Object obj)
  13.         /*
  14.         重写equals方法,比较两个人对象的姓名和年龄判断是否同一人
  15.         注意:
  16.         在List集合中,contains和remove方法的低层都是equals方法
  17.         所以,重写了equals方法后,contains和remove方法也会改变
  18.         例如此时,contains方法就是查询集合中是否有指定对象同姓名年龄的对象
  19.         */
  20.         {
  21.                 if (!(obj instanceof Person) )
  22.                 {
  23.                         return false;
  24.                 }
  25.                 //instanceof是判断obj是否是Person的实例
  26.                 //换句话说,判断obj是否可以转型为Person
  27.                 Person p=(Person) obj;
  28.                 return this.name.equals(p.name)&&this.age==p.age;
  29.         }
  30.         public void sopPerson()
  31.         {
  32.                 Person.sop("name:"+name+" ,age:"+age);
  33.         }
  34.         public static void sop(Object obj)
  35.         {
  36.                 System.out.println(obj);
  37.         }
  38. }
  39. class Out
  40. {
  41.         private ArrayList per;
  42.         ArrayList per_n=new ArrayList();
  43.         Out()
  44.                 //构造函数录入原名单
  45.         {
  46.                 per=new ArrayList();
  47.                 per.add(new Person("jia",18));
  48.                 per.add(new Person("yi",18));
  49.                 per.add(new Person("jia",23));
  50.                 per.add(new Person("jia",18));
  51.                 per.add(new Person("bin",18));
  52.                 per.add(new Person("yi",18));
  53.                 per.add(new Person("bin",18));
  54.                 per.add(new Person("jia",20));
  55.                 show(per);
  56.         }
  57.         public void outPerson()
  58.                 //去除相同人员的方法
  59.         {
  60.                 Iterator it=per.iterator();
  61.                 //跌送提取集合对象
  62.                 while (it.hasNext())
  63.                 {
  64.                         Person p=(Person) it.next();
  65.                         //next返回的是Object对象
  66.                         //要使用Person中方法,需要向下转型
  67.                         if (!per_n.contains(p))
  68.                         //equals方法已经重写,contains也有了新的功能
  69.                         {
  70.                                 per_n.add(p);
  71.                         }
  72.                 }
  73.                 Person.sop("-------------------------------");
  74.                 show(per_n);
  75.         }
  76.         public void show(ArrayList per)
  77.                 //遍历集合对象方法
  78.         {
  79.                 Iterator it=per.iterator();
  80.                 while (it.hasNext())
  81.                 {
  82.                         Person p=(Person)it.next();
  83.                         p.sopPerson();
  84.                 }
  85.         }

  86. }
  87. class  ArrayListDemo
  88. {
  89.         public static void main(String[] args)
  90.         {
  91.                 new Out().outPerson();
  92.         }
  93. }
复制代码



3 个回复

倒序浏览
学习了学习了
回复 使用道具 举报
集合里的啊。
回复 使用道具 举报
可以的。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马