黑马程序员技术交流社区

标题: ArrayList的问题 [打印本页]

作者: rolling-stone    时间: 2014-8-2 12:35
标题: ArrayList的问题
不会在主函数中调用equal方法,怎么调用,还有这是一个去掉重复元素的程序,但是现在不知道如何调用,所以去不掉重复的元素.
  1. import java.util.*;
  2. class  ArrayListDemo2
  3. {
  4.         private String name;
  5.         private int age;
  6.         ArrayListDemo2(String name,int age)
  7.         {
  8.                 this.name = name;
  9.                 this.age = age;
  10.         }
  11.         public String getName()
  12.         {
  13.                 return name;
  14.         }
  15.         public int getAge()
  16.         {
  17.                 return age;
  18.         }
  19.         public boolean equals(Object obj)
  20.         {
  21.                 if(obj instanceof ArrayListDemo2)
  22.                 {
  23.                         return false;
  24.                 }
  25.                 ArrayListDemo2 a = (ArrayListDemo2)obj;
  26.                 return this.name.equals(a.name) && this.age == a.age;
  27.                
  28.         }
  29.         public static ArrayList SingleElement(ArrayList al)
  30.         {
  31.                 ArrayList a = new ArrayList();
  32.                 Iterator it = al.iterator();
  33.                 while(it.hasNext())
  34.                 {
  35.                         Object obj = it.next();
  36.                         if(!a.contains(obj))
  37.                                 a.add(obj);
  38.                 }
  39.                 return a;
  40.         }
  41.                 public static void sop(Object obj)
  42.         {
  43.                 System.out.println(obj);
  44.         }
  45.         public static void main(String[] args)
  46.         {
  47.                 ArrayList al = new ArrayList();
  48.                 al.add(new ArrayListDemo2("zhao",20));
  49.                 al.add(new ArrayListDemo2("zhao",20));
  50.                 al.add(new ArrayListDemo2("qian",20));
  51.                 al.add(new ArrayListDemo2("zhao",20));
  52.                 al.add(new ArrayListDemo2("sun",20));
  53.                 al.add(new ArrayListDemo2("zhao",20));
  54.                 al=SingleElement(al);
  55.                 Iterator it = al.iterator();
  56.                 while(it.hasNext())
  57.                 {
  58.                         ArrayListDemo2 al2 = (ArrayListDemo2)it.next();
  59.                         sop(al2.getName()+";;"+al2.getAge());
  60.                 }
  61.         }
  62. }
复制代码




作者: ztw    时间: 2014-8-2 12:53
看看视频吧!equals是被底层调用的
作者: rolling-stone    时间: 2014-8-2 12:55
ztw 发表于 2014-8-2 12:53
看看视频吧!equals是被底层调用的

那我的这个无法去掉重复的,这是为什么?就是视频没看懂才上来问的
作者: 李大壮    时间: 2014-8-2 14:03
本帖最后由 李大壮 于 2014-8-2 14:07 编辑


21行,应该是不属于的情况下才返回false。
即  if(!(obj instanceof ArrayListDemo2))
调用equals的是contains语句,a.contains(obj)代表了拿 obj 分别 equals 集合a里面的所有元素。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2