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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 思维 高级黑马   /  2014-7-30 17:51  /  961 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 思维 于 2014-8-1 10:08 编辑

今天我将自定义对象人作为元素存到ArrayList集合中,并去除重复元素,同姓名同年龄视为一个人。(要求:必须使用ArrayList集合)。代码中总是遇到泛型的问题,今天终于解决了,正确代码如下:
  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 ArrayListDemo{
  23.         public static void main(String[] args){
  24.                 ArrayList<Person> al=new ArrayList<Person>();
  25.                 al.add(new Person("lisi01",31));
  26.                 al.add(new Person("lisi01",30));
  27.                 al.add(new Person("lisi02",32));
  28.                 al.add(new Person("lisi03",33));
  29.                 al.add(new Person("lisi01",30));
  30.                 SingleDemo<Person> sd=new SingleDemo<Person>();
  31.                 ArrayList<Person> all=sd.singleElement(al);
  32.                 Iterator<Person> it=all.iterator();
  33.                 while(it.hasNext()){
  34.                         Person p=(Person)it.next();
  35.                         System.out.println(p.getName()+"..."+p.getAge());
  36.                 }
  37.         }
  38. }
  39. class SingleDemo<T>{
  40.         public ArrayList<T> singleElement(ArrayList<T> al){
  41.                 ArrayList<T> newAl=new ArrayList<T>();
  42.                 Iterator<T> it=al.iterator();
  43.                 while(it.hasNext()){
  44.                         T t=it.next();
  45.                         if(!newAl.contains(t))
  46.                                 newAl.add(t);
  47.                 }
  48.                 return newAl;
  49.         }
  50. }
复制代码



评分

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

查看全部评分

4 个回复

倒序浏览
本帖最后由 赵顺超 于 2014-7-30 18:18 编辑
  1. import java.util.*;

  2. class ArrayListDemo{
  3.         public static void main(String[] args){
  4.                 ArrayList<Person> al=new ArrayList<Person>( );
  5.                 al.add(new Person("lisi01",31));
  6.                 al.add(new Person("lisi01",30));
  7.                 al.add(new Person("lisi02",32));
  8.                 al.add(new Person("lisi03",33));
  9.                 al.add(new Person("lisi01",30));

  10.                 ArrayList<Person> al1 = singleElement(al);
  11.                         Iterator<Person> it=al1.iterator();
  12.                 while(it.hasNext()){
  13.                         Person p=(Person)it.next();
  14.                         System.out.println(p.getName()+"..."+p.getAge());
  15.                 }
  16.                
  17.         }
  18.         public static ArrayList<Person> singleElement(ArrayList<Person> al)
  19.             {
  20.                     //定义一个临时容器。
  21.                     ArrayList<Person> newAl = new ArrayList<Person>();

  22.                     Iterator<Person> it = al.iterator();

  23.                     while(it.hasNext())
  24.                     {
  25.                             Person obj = it.next();

  26.                             if (!newAl.contains(obj))
  27.                                     newAl.add(obj);
  28.                     }

  29.                     return newAl;
  30.     }
  31. }


  32. class Person {
  33.     private String name;
  34.     private int age;
  35.     Person(String name,int age){
  36.             this.name=name;
  37.             this.age=age;
  38.     }
  39.     public boolean equals(Object obj){
  40.             if(!(obj instanceof Person))
  41.                     return false;
  42.             Person p=(Person)obj;
  43.             return this.name.equals(p.name)&&this.age==p.age;
  44.     }
  45.     public String getName(){
  46.             return name;
  47.     }
  48.     public int getAge(){
  49.             return age;
  50.     }
  51. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
格子、 + 1 赞一个!

查看全部评分

回复 使用道具 举报
回复 使用道具 举报

如果我再调用学生类,那singleElement()方法就不适用了。怎么解决?
回复 使用道具 举报

singleElement方法中不指定Person类型怎么做啊!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马