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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张然龙 于 2014-5-5 12:55 编辑

  我觉得我写的都对的啊!,,卡了我两个小时了。 不过我知道肯定有问题 ,当局者迷 ,希望大家指出, 谢谢!!感激不尽!!
我要实现的功能是将不同的参数的对象存入al2中,将相同的去掉!,也就是说最后al2中剩下的应该只有一个!!
代码如下↓


  1. class Person
  2. {
  3.         String name;
  4.         Person(String name)
  5.         {
  6.                 this.name=name;
  7.         }
  8.         public boolean equals(Object a)//覆盖equals方法,形成独有的equals判断方法
  9.         {
  10.                 if(!(a instanceof Person) )
  11.                 {
  12.                         return false;
  13.                 }
  14.                 Person p=(Person)a;
  15.                 System.out.println(this.name+"....."+p.name);
  16.                 return this.name.equals(p.name);
  17.         }
  18. }
  19. class Demo3
  20. {
  21.         public static void main (String args[])
  22.         {
  23.                 ArrayList al=new ArrayList();
  24.                 al.add(new Person("x"));
  25.                 al.add(new Person("x"));
  26.                 al.add(new Person("x"));
  27.                 al.add(new Person("x"));
  28.                
  29.                 ArrayList al2=new ArrayList();
  30.                
  31.                 for(Iterator it=al.iterator();it.hasNext();)//遍历al集合
  32.                 {
  33.                         Person p=(Person)it.next();
  34.                         if(!(al.contains(p)))//判断是否相同参数
  35.                         {
  36.                                 al2.add(p);
  37.                         }        
  38.                 }
  39.                 System.out.println(al2);//打印al2中的元素
  40.         }
  41. }
复制代码





3 个回复

倒序浏览
本帖最后由 skill20 于 2014-5-3 22:07 编辑

Person p=(Person)it.next();
                        if(!(al.contains(p)))//判断是否相同参数//这句话一直都是假吧。。。a1.contains(p)一直为真!
                        {
                                al2.add(p);
                        }        

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
  1. for(Iterator it=al.iterator();it.hasNext();)//遍历al集合
  2.                 {
  3.                         Person p=(Person)it.next();
  4.                         if(!(a2.contains(p)))//判断是否相同参数
  5.                         {
  6.                                 al2.add(p);
  7.                         }        
  8.                 }
复制代码

你的判断是否有相同的参数结果全部为假了

评分

参与人数 1技术分 +1 收起 理由
SyouRai_Tsk + 1

查看全部评分

回复 使用道具 举报
本帖最后由 张然龙 于 2014-5-4 08:10 编辑

我晕哦  原来是这个问题 ,我脑袋短路了一下。。。

这个应该对了吧 ↓

  1. class Demo3
  2. {
  3.         public static void main (String args[])
  4.         {
  5.                 ArrayList al=new ArrayList();
  6.                 al.add(new Person("x"));
  7.                 al.add(new Person("x"));
  8.                 al.add(new Person("x"));
  9.                 al.add(new Person("x"));
  10.                
  11.                 ArrayList al2=new ArrayList();
  12.                
  13.                 for(Iterator it=al.iterator();it.hasNext();)
  14.                 {
  15.                         Person p=(Person)it.next();
  16.                         if(!(al2.contains(p)))
  17.                         {
  18.                                 al2.add(p);
  19.                         }
  20.                 }
  21.                 System.out.println(al2);
  22.         }
  23. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马