黑马程序员技术交流社区

标题: ArrayList去除重复元素失败? [打印本页]

作者: feng0606    时间: 2015-9-11 23:13
标题: ArrayList去除重复元素失败?


  1. import java.util.*;

  2. public class ArrayListTest2 {

  3.         public static void main(String[] args) {
  4.                
  5.                 ArrayList<Person> al = new ArrayList<Person>();
  6.                 al.add(new Person("lisi01",20));
  7.                 al.add(new Person("lisi02",21));
  8.                 al.add(new Person("lisi03",22));
  9.                 al.add(new Person("lisi04",23));
  10.                 al.add(new Person("lisi04",23));
  11.                
  12.                 singleElements(al);
  13.                 Iterator<Person> it = al.iterator();
  14.                 while(it.hasNext())
  15.                 {
  16.                         Person p = it.next();
  17.                         System.out.println(p.getName()+"---"+p.getAge());
  18.                 }
  19.         }
  20.        
  21.         public static ArrayList<Person> singleElements(ArrayList<Person> al)
  22.         {
  23.                 ArrayList<Person> newAl = new ArrayList<Person>();
  24.                
  25.                 Iterator<Person> it = newAl.iterator();
  26.                 while(it.hasNext())
  27.                 {
  28.                         Person p =it.next();
  29.                        
  30.                         if(!(newAl.contains(p)))
  31.                                 newAl.add(p);
  32.                 }
  33.                 return newAl;
  34.         }

  35. }

  36. class Person
  37. {
  38.         private int age;
  39.         private String name;
  40.        
  41.         public Person(String name,int age) {
  42.                 super();
  43.                 this.name = name;
  44.                 this.age = age;
  45.                
  46.         }
  47.         @Override
  48.         public boolean equals(Object obj)
  49.         {
  50.                 if(!(obj instanceof Person))
  51.                         throw new RuntimeException("对象错误");               
  52.                 Person p = (Person)obj;
  53.                 return this.name.equals(p.name) && this.age == p.age;       
  54.         }
  55.        
  56.         public int getAge() {
  57.                 return age;
  58.         }
  59.         public void setAge(int age) {
  60.                 this.age = age;
  61.         }
  62.         public String getName() {
  63.                 return name;
  64.         }
  65.         public void setName(String name) {
  66.                 this.name = name;
  67.         }
  68.        
  69.        
  70. }
复制代码

为什么运行以后两个lisi都还在?求解?
作者: lion_good    时间: 2015-9-12 06:43
两个错误
1 . 16行
2 . 29行



  1. import java.util.*;

  2. public class ArrayListTest2 {

  3.     public static void main(String[] args) {

  4.         ArrayList<Person> al = new ArrayList<Person>();
  5.         al.add(new Person("lisi01",20));
  6.         al.add(new Person("lisi02",21));
  7.         al.add(new Person("lisi03",22));
  8.         al.add(new Person("lisi04",23));
  9.         al.add(new Person("lisi04",23));

  10.         al=singleElements(al);
  11.         Iterator<Person> it = al.iterator();
  12.         while(it.hasNext())
  13.         {
  14.             Person p = it.next();
  15.             System.out.println(p.getName()+"---"+p.getAge());
  16.         }
  17.     }

  18.     public static ArrayList<Person> singleElements(ArrayList<Person> al)
  19.     {
  20.         ArrayList<Person> newAl = new ArrayList<Person>();

  21.         Iterator<Person> it = al.iterator();
  22.         while(it.hasNext())
  23.         {
  24.             Person p =it.next();

  25.             if(!(newAl.contains(p)))
  26.                 newAl.add(p);
  27.         }
  28.         return newAl;
  29.     }

  30. }

  31. class Person
  32. {
  33.     private int age;
  34.     private String name;

  35.     public Person(String name,int age) {
  36.         super();
  37.         this.name = name;
  38.         this.age = age;

  39.     }
  40.     @Override
  41.     public boolean equals(Object obj)
  42.     {
  43.         if(!(obj instanceof Person))
  44.             throw new RuntimeException("对象错误");
  45.         Person p = (Person)obj;
  46.         return this.name.equals(p.name) && this.age == p.age;
  47.     }

  48.     public int getAge() {
  49.         return age;
  50.     }
  51.     public void setAge(int age) {
  52.         this.age = age;
  53.     }
  54.     public String getName() {
  55.         return name;
  56.     }
  57.     public void setName(String name) {
  58.         this.name = name;
  59.     }


  60. }
复制代码

作者: Java_EE    时间: 2015-9-12 07:44
顶一个,
作者: feng0606    时间: 2015-9-12 11:07
lion_good 发表于 2015-9-12 06:43
两个错误
1 . 16行
2 . 29行

谢谢啊,确实是这两处的错误.




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