本帖最后由 小冰块 于 2013-6-11 12:11 编辑
是14天的ArrayList练习2,看完视频后自己写了一遍,但是打印的结果不对,看了半天也没看出来哪里有问题……
/*
定义一个学生类,有姓名。年龄两个属性,若两个属性都相同,即视为同一个人。
将其添加到ArrayList中,并去除相同元素。
*/
import java.util.*;
class Person{ //定义Person类
private static String name;
private static int age;
Person(String name , int age){//构造函数时传入参数
this.name = name;
this.age = age;
}
public static String getName(){
return name;
}
public static int getAge(){
return age;
}
public boolean equals(Object obj){ //重写equals()方法
Person p = (Person)obj;
return (this.name.equals(p.name) && this.age==p.age);
}
}
class ArrayDemo
{
public static void print(Object obj) //定义快捷输出语句
{
System.out.println(obj);
}
public static void main(String[] args)
{
ArrayList al = new ArrayList();
al.add(new Person("ZhangSan1",21));
al.add(new Person("ZhangSan2",22));
al.add(new Person("ZhangSan3",23));
al.add(new Person("ZhangSan4",24));
al.add(new Person("ZhangSan5",25));
al.add(new Person("ZhangSan3",23));
print(al.size());//输出去重前的元素数,<---------------这里输出的是6
al=singleElement(al);//调用去重方法
Iterator it = al.iterator();//定义一个迭代器,遍历ArrayList
while(it.hasNext())
{
Person p = (Person)it.next();
print(p.getName()+"..."+p.getAge());//<-------------------------------只能打印出一个元素
}
print(al.size());//输出去重后的元素数<-----------------------应该输出的是5,但输出的是1
}
public static ArrayList singleElement(ArrayList al)//去重方法
{
ArrayList al2 = new ArrayList();
Iterator it = al.iterator();
while(it.hasNext())
{
Object obj = it.next();
if (!al2.contains(obj))
{
al2.add(obj);
}
}
return al2;
}
}
|