黑马程序员技术交流社区
标题:
集合中重复元素的问题!求解
[打印本页]
作者:
思维
时间:
2014-8-24 14:17
标题:
集合中重复元素的问题!求解
本帖最后由 思维 于 2014-8-24 16:58 编辑
今天写了一个集合去除重复元素的代码!为什么得不到正确的结果啊?
import java.util.*;
class Person{
private String name;
private int age;
Person(String name,int age){
this.name = name;
this.age = age;
}
public boolean equals(Object obj){
if(obj instanceof Person)
return false;
Person p = (Person)obj;
return this.name.equals(p.name)&&this.age==p.age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
}
class Test{
public static void main(String[] args){
ArrayList<Person> al = new ArrayList<Person>();
al.add(new Person("zhangsan",19));
al.add(new Person("lisi",32));
al.add(new Person("wangwu",12));
al.add(new Person("zhangsan",19));
Iterator<Person> it = al.iterator();
while(it.hasNext()){
Person p = (Person)it.next();
System.out.println(p.getName()+"..."+p.getAge());
}
System.out.println("---------------------");
ArrayList<Person> newAl = singleElement(al);
Iterator ite = newAl.iterator();
while(ite.hasNext()){
Person p = (Person)ite.next();
System.out.println(p.getName()+"..."+p.getAge());
}
}
private static ArrayList<Person> singleElement(ArrayList<Person> al){
ArrayList<Person> newAl = new ArrayList<Person>();
Iterator<Person> it = al.iterator();
while(it.hasNext()){
Person p = (Person)it.next();
if(!newAl.contains(p)){
newAl.add(p);
}
}
return newAl;
}
}
复制代码
作者:
Huberry
时间:
2014-8-24 15:20
没注释看着好难受{:3_49:}
public boolean equals(Object obj){
if(!(obj instanceof Person))//条件反了
return false;
Person p = (Person)obj;
return this.name.equals(p.name)&&this.age==p.age;
}
复制代码
作者:
思维
时间:
2014-8-24 16:57
Huberry 发表于 2014-8-24 15:20
没注释看着好难受
晕!自己找错误确实很难啊!:L
作者:
wwfkofufo
时间:
2014-8-24 17:25
话说,我没发现错误啊。。。是不是contains的方法使用错了?!
作者:
思维
时间:
2014-8-24 17:28
wwfkofufo 发表于 2014-8-24 17:25
话说,我没发现错误啊。。。是不是contains的方法使用错了?!
看沙发注释!
作者:
格子、
时间:
2014-8-24 20:43
建议楼主养成注释的好习惯
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2