黑马程序员技术交流社区
标题:
集合中的泛型问题怎么解决?
[打印本页]
作者:
思维
时间:
2014-7-30 17:51
标题:
集合中的泛型问题怎么解决?
本帖最后由 思维 于 2014-8-1 10:08 编辑
今天我将自定义对象人作为元素存到ArrayList集合中,并去除重复元素,同姓名同年龄视为一个人。(要求:必须使用ArrayList集合)。代码中总是遇到泛型的问题,今天终于解决了,正确代码如下:
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 ArrayListDemo{
public static void main(String[] args){
ArrayList<Person> al=new ArrayList<Person>();
al.add(new Person("lisi01",31));
al.add(new Person("lisi01",30));
al.add(new Person("lisi02",32));
al.add(new Person("lisi03",33));
al.add(new Person("lisi01",30));
SingleDemo<Person> sd=new SingleDemo<Person>();
ArrayList<Person> all=sd.singleElement(al);
Iterator<Person> it=all.iterator();
while(it.hasNext()){
Person p=(Person)it.next();
System.out.println(p.getName()+"..."+p.getAge());
}
}
}
class SingleDemo<T>{
public ArrayList<T> singleElement(ArrayList<T> al){
ArrayList<T> newAl=new ArrayList<T>();
Iterator<T> it=al.iterator();
while(it.hasNext()){
T t=it.next();
if(!newAl.contains(t))
newAl.add(t);
}
return newAl;
}
}
复制代码
作者:
赵顺超
时间:
2014-7-30 18:12
本帖最后由 赵顺超 于 2014-7-30 18:18 编辑
import java.util.*;
class ArrayListDemo{
public static void main(String[] args){
ArrayList<Person> al=new ArrayList<Person>( );
al.add(new Person("lisi01",31));
al.add(new Person("lisi01",30));
al.add(new Person("lisi02",32));
al.add(new Person("lisi03",33));
al.add(new Person("lisi01",30));
ArrayList<Person> al1 = singleElement(al);
Iterator<Person> it=al1.iterator();
while(it.hasNext()){
Person p=(Person)it.next();
System.out.println(p.getName()+"..."+p.getAge());
}
}
public static ArrayList<Person> singleElement(ArrayList<Person> al)
{
//定义一个临时容器。
ArrayList<Person> newAl = new ArrayList<Person>();
Iterator<Person> it = al.iterator();
while(it.hasNext())
{
Person obj = it.next();
if (!newAl.contains(obj))
newAl.add(obj);
}
return newAl;
}
}
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;
}
}
复制代码
作者:
赵顺超
时间:
2014-7-30 18:19
QQ截图20140730181904.png
(161.31 KB, 下载次数: 10)
下载附件
2014-7-30 18:19 上传
作者:
思维
时间:
2014-7-30 18:40
赵顺超 发表于 2014-7-30 18:12
如果我再调用学生类,那singleElement()方法就不适用了。怎么解决?
作者:
思维
时间:
2014-7-30 18:59
赵顺超 发表于 2014-7-30 18:12
singleElement方法中不指定Person类型怎么做啊!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2