本帖最后由 刘海东 于 2013-6-3 20:49 编辑
/*
*将自定义对象作为元素
*并取出相同元素,重复元素
*如:存储人对象
*同姓名同年龄视为同一个人,为同一元素
*思路:
*1、对人进行描述,将数据封装进人对象
*2、定义容器,将人存入
*3、取出*/
package cn.itcast.day14;
import java.util.ArrayList;
import java.util.Iterator;
public class ArrayListTest2 {
public static void main(String[] args) {
ArrayList<Person> al = new ArrayList<Person>();
al.add(new Person("lisi01", 21));
al.add(new Person("lisi02", 22));
al.add(new Person("lisi02", 22));
ArrayList<Person> al2 = singleElements(al);// 调用这个方法之后,本应该去除重复元素
for (Iterator<Person> it = al2.iterator(); it.hasNext();) {
Person temp = it.next();
System.out.println(temp.getName() + "..." + temp.getAge());// 迭代器:打印元素
}
}
public static ArrayList<Person> singleElements(ArrayList<Person> al) {
ArrayList<Person> newAl = new ArrayList<Person>(); // 这个方法 作用是 去除重复元素
for (Iterator<Person> it = al.iterator(); it.hasNext();) {
Person p = it.next();
if (!newAl.contains(p)) {//这个contians()方法不是应该调用Person类中重写之后的equals方法吗?
newAl.add(p);
}
}
return newAl;
}
}
class Person {
private String name;
private int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public boolean equals(Person p) {
System.out.println(this.name + "......" + p.name);// 这句话没有执行,说明没有调用这个equals方法
return this.name.equals(p.name) && this.age == p.age;// 这句话里面的equals是字符串里面的equals方法
}
}
这里我是直接用myEclipse 写的。写好之后运行发现不能去除重复元素
然后我换用cmd,编译可以通过,运行时报Exception in thread "main" java.lang.NoClassDefFoundError: ArrayListTest2
这个又是为什么?
|