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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


/*
将自定义对象作为元素存储到ArrayList集合中,并去除重复元素。
*/

老师讲的比较快,自己琢磨好久才写出来。


  1. import java.util.*;
  2. class Demo8
  3. {
  4.         public static void main(String [] args)
  5.         {
  6.                 ArrayList al=new ArrayList();
  7.                 al.add(new Person("L1",22));     //al.add(Object oo);   存进去的对象是Object类型。取出时应向下转型。
  8.                 al.add(new Person("L2",26));
  9.                 al.add(new Person("L3",30));
  10.                 al.add(new Person("L3",30));     //new两个相同的元素,存到不同的地址。去重复方法不管用。需要重写equals方法。
  11.                 al.add(new Person("L4",28));
  12.                
  13.                 al=noRepeat(al);
  14.                
  15.                 Iterator it=al.iterator();
  16.                 while (it.hasNext())
  17.                 {
  18.                         Person p=(Person)it.next();                        //向下转型。
  19.                         System.out.println(p.getName()+"::::"+p.getAge());
  20.                         }
  21.                 }
  22.        
  23.         public static ArrayList noRepeat(ArrayList al)                        //去重复方法。
  24.         {
  25.                 ArrayList temp=new ArrayList();
  26.                 Iterator it=al.iterator();
  27.                 while (it.hasNext())
  28.                 {
  29.                         Object oo=it.next();
  30.                         if (!temp.contains(oo))
  31.                                 temp.add(oo);
  32.                         }
  33.                 return temp;
  34.                 }
  35.         }

  36. class Person
  37. {
  38.         private String name;
  39.         private int age;
  40.         Person (String name,int age)
  41.         {
  42.                 this.name=name;
  43.                 this.age=age;
  44.                 }
  45.        
  46.         public boolean equals(Object oo)                                //重写equals方法。
  47.         {
  48.                 if (!(oo instanceof Person))
  49.                         return false;
  50.                 Person p=(Person)oo;
  51.                 //System.out.println(this.name+"<---->"+p.name);
  52.                 return this.name.equals(p.name) && this.age==p.age;
  53.                 }
  54.        
  55.         public String getName()
  56.         {
  57.                 return name;
  58.                 }
  59.         public int getAge()
  60.         {
  61.                 return age;
  62.                 }
  63.         }
复制代码




1 个回复

倒序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马