黑马程序员技术交流社区

标题: 今天学到集合,出了点问题。。向各位大神求解 [打印本页]

作者: 张然龙    时间: 2014-5-3 21:40
标题: 今天学到集合,出了点问题。。向各位大神求解
本帖最后由 张然龙 于 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. }
复制代码






作者: skill20    时间: 2014-5-3 22:06
本帖最后由 skill20 于 2014-5-3 22:07 编辑

Person p=(Person)it.next();
                        if(!(al.contains(p)))//判断是否相同参数//这句话一直都是假吧。。。a1.contains(p)一直为真!
                        {
                                al2.add(p);
                        }        
作者: 李东梁    时间: 2014-5-3 23:46
  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.                 }
复制代码

你的判断是否有相同的参数结果全部为假了
作者: 张然龙    时间: 2014-5-4 08:07
本帖最后由 张然龙 于 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. }
复制代码





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