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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© rolling-stone 中级黑马   /  2014-8-2 12:35  /  831 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

不会在主函数中调用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. }
复制代码



3 个回复

倒序浏览
看看视频吧!equals是被底层调用的
回复 使用道具 举报
ztw 发表于 2014-8-2 12:53
看看视频吧!equals是被底层调用的

那我的这个无法去掉重复的,这是为什么?就是视频没看懂才上来问的
回复 使用道具 举报
本帖最后由 李大壮 于 2014-8-2 14:07 编辑


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

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马