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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3. import java.util.ListIterator;

  4. public class ArrayListDemo2
  5. {
  6.         public static void main(String[] args)
  7.         {
  8.                 ArrayList<Person> person = new ArrayList<Person>();
  9.                 person.add(new Person("李鸿章",50));
  10.                 person.add(new Person("袁世凯",52));
  11.                 person.add(new Person("张作霖",60));
  12.                 person.add(new Person("袁世凯",52));
  13.                 person.add(new Person("张作霖",60));
  14.                 person = singleElement(person);
  15.                
  16.                 Iterator al = person.iterator();
  17.                 while (al.hasNext())
  18.                 {                       
  19.                         Person p = (Person) al.next();
  20.                         System.out.println(p.toString());                       
  21.                 }
  22.         }
  23.        
  24.         public static ArrayList singleElement(ArrayList al)
  25.         {
  26.                 ArrayList newArr = new ArrayList();
  27.                 for(ListIterator li = al.listIterator();li.hasNext();)
  28.                 {
  29.                         Object obj = li.next();
  30.                         if(!newArr.equals(obj))
  31.                                 newArr.add(obj);
  32.                 }
  33.                 return newArr;
  34.         }       
  35. }

  36. class Person
  37. {
  38.         private String name;
  39.         private int age;
  40.        
  41.         Person(String name,int age)
  42.         {
  43.                 this.name = name;
  44.                 this.age = age;
  45.         }
  46.         public String toString()
  47.         {
  48.                 return name+" "+age+"\t";
  49.         }       
  50.        
  51.         public boolean equals(Object obj)
  52.         {
  53.                 if(!(obj instanceof Person))
  54.                 {
  55.                         return false;
  56.                 }
  57.                 Person p = (Person)obj;
  58.                 return this.name.equals(p.name) && this.age == p.age;
  59.         }
  60. }
复制代码
我这个貌似也没错  可是重复的元素一直输出  都要崩溃了
哪位高手可以帮我看下 代码哪里出错了 谢谢啊

4 个回复

倒序浏览
  1. class ArrayListDemo{
  2.         public static void main(String[] args){
  3.                 ArrayList al=new ArrayList();
  4.                 al.add(new Person("李四01",20));
  5.                 al.add(new Person("李四03",23));
  6.                 al.add(new Person("李四04",24));
  7.                 al.add(new Person("李四02",22));
  8.                 al.add(new Person("李四01",20));
  9.                 al.add(new Person("李四03",23));
  10.                 al.add(new Person("李四02",22));
  11.                 al=singleElement(al);
  12.                 Iterator it=al.iterator();
  13.                 while(it.hasNext()){
  14.                         Person p=(Person)it.next();
  15.                         System.out.println(p.getName()+p.getAge());
  16.                 }
  17.         }
  18.         public static ArrayList singleElement(ArrayList al){
  19.                 ArrayList la=new ArrayList();
  20.                 Iterator it=al.iterator();
  21.                 while(it.hasNext()){
  22.                         Object obj=it.next();
  23.                         if(!la.contains(obj))
  24.                                 la.add(obj);
  25.                 }
  26.                 return la;
  27.         }
  28. }
复制代码

用contains
回复 使用道具 举报 3 0

可以了  谢谢啊 :)
回复 使用道具 举报
其实,这个题,使用HashSet最简单,利用HashSet的元素不重复的特点。
  1. import java.util.Set;
  2. import java.util.HashSet;

  3. public class HashSetTest
  4. {
  5.         public static void main(String[] args)
  6.         {
  7.                 Set<Person> person = new HashSet<Person>();
  8.                 person.add(new Person("李鸿章",50));
  9.                 person.add(new Person("袁世凯",52));
  10.                 person.add(new Person("张作霖",60));
  11.                 person.add(new Person("袁世凯",52));
  12.                 person.add(new Person("张作霖",60));
  13.                                
  14.                                 for(Person p : person)
  15.                                 {
  16.                                         System.out.println(p);
  17.                                 }

  18.         }
  19. }

  20. class Person
  21. {
  22.         private String name;
  23.         private int age;
  24.         
  25.         Person(String name,int age)
  26.         {
  27.                 this.name = name;
  28.                 this.age = age;
  29.         }
  30.         public String toString()
  31.         {
  32.                 return name+" "+age+"\t";
  33.         }        
  34.         
  35.                 public int hashCode()
  36.                 {
  37.                         final int prime = 31;
  38.                         int result = 1;
  39.                
  40.                         result = prime * result +age;
  41.                         result = prime * result + ((name == null) ? 0 : name.hashCode());
  42.                
  43.                         return result;
  44.                 }

  45.         public boolean equals(Object obj)
  46.         {
  47.                         if(!(obj instanceof Person))
  48.             {
  49.                                  return false;
  50.             }
  51.             Person p = (Person)obj;
  52.             return this.name.equals(p.name) && this.age == p.age;
  53.         }
  54. }
复制代码
回复 使用道具 举报
夜班心桥 发表于 2015-4-8 00:24
其实,这个题,使用HashSet最简单,利用HashSet的元素不重复的特点。

:)我之前没学到 这块 所以不知道  谢谢你啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马