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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 思维 高级黑马   /  2014-8-24 14:17  /  1362 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 思维 于 2014-8-24 16:58 编辑

今天写了一个集合去除重复元素的代码!为什么得不到正确的结果啊?
  1. import java.util.*;
  2. class Person{
  3.         private String name;
  4.         private int age;
  5.         Person(String name,int age){
  6.                 this.name = name;
  7.                 this.age = age;
  8.         }
  9.         public boolean equals(Object obj){
  10.                 if(obj instanceof Person)
  11.                         return false;
  12.                 Person p = (Person)obj;
  13.                 return this.name.equals(p.name)&&this.age==p.age;
  14.         }
  15.         public String getName(){
  16.                 return name;
  17.         }
  18.         public int getAge(){
  19.                 return age;
  20.         }
  21. }
  22. class Test{
  23.         public static void main(String[] args){
  24.                 ArrayList<Person> al = new ArrayList<Person>();
  25.                 al.add(new Person("zhangsan",19));
  26.                 al.add(new Person("lisi",32));
  27.                 al.add(new Person("wangwu",12));
  28.                 al.add(new Person("zhangsan",19));
  29.                 Iterator<Person> it = al.iterator();
  30.                 while(it.hasNext()){
  31.                         Person p = (Person)it.next();
  32.                         System.out.println(p.getName()+"..."+p.getAge());
  33.                 }
  34.                 System.out.println("---------------------");
  35.                 ArrayList<Person> newAl = singleElement(al);
  36.                 Iterator ite = newAl.iterator();
  37.                 while(ite.hasNext()){
  38.                         Person p = (Person)ite.next();
  39.                         System.out.println(p.getName()+"..."+p.getAge());
  40.                 }
  41.         }
  42.         private static ArrayList<Person> singleElement(ArrayList<Person> al){
  43.                 ArrayList<Person> newAl = new ArrayList<Person>();
  44.                 Iterator<Person> it = al.iterator();
  45.                 while(it.hasNext()){
  46.                         Person p = (Person)it.next();
  47.                         if(!newAl.contains(p)){                                
  48.                                 newAl.add(p);
  49.                         }
  50.                 }
  51.                 return newAl;
  52.         }
  53. }
复制代码


评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 淡定

查看全部评分

5 个回复

倒序浏览
没注释看着好难受{:3_49:}

  1.         public boolean equals(Object obj){
  2.                 if(!(obj instanceof Person))//条件反了
  3.                         return false;
  4.                 Person p = (Person)obj;
  5.                 return this.name.equals(p.name)&&this.age==p.age;
  6.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
Huberry 发表于 2014-8-24 15:20
没注释看着好难受

晕!自己找错误确实很难啊!:L
回复 使用道具 举报
话说,我没发现错误啊。。。是不是contains的方法使用错了?!
回复 使用道具 举报
wwfkofufo 发表于 2014-8-24 17:25
话说,我没发现错误啊。。。是不是contains的方法使用错了?!

看沙发注释!
回复 使用道具 举报
建议楼主养成注释的好习惯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马