//需求: 定义一个函数清除集合中的重复元素。 只要书号一致则为同一本书。
package it.sun.List;
import java.util.ArrayList;
import java.util.Iterator;
class Book{
int id;
String name;
double price;
public Book(int id, String name, double price) {
this.id = id;
this.name = name;
this.price = price;
}
@Override
public String toString() {
return "{书号:"+this.id+"书名:"+this.name+"价格:"+this.price+"}";
}
@Override
public boolean equals(Object obj) {
Book book = (Book)obj;
return this.id==book.id;
}
@Override
public int hashCode() {
return this.id;
}
}
public class Demo5 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(new Book(110,"java编程思想",86));
list.add(new Book(112,"java核心技术",64));
list.add(new Book(110,"java神书",86));
list.add(new Book(119,"深入javaWeb",32));
ArrayList list1 = clearRepeat(list);
System.out.println("消除重复书籍后:"+list1);
}
public static ArrayList clearRepeat(ArrayList OldList) {
//创建一个集合对象
ArrayList newList = new ArrayList();
//使用迭代器遍历旧集合的元素
Iterator it = OldList.iterator();
while(it.hasNext()) {
Book book = (Book)it.next();//从旧的集合中取出元素后,判断新的几何是否存在该元素
if(!newList.contains(book)) {//contains方法依靠的是equals方法,而equals方法默认比较的是内存地址
//如果不包含就将其存入到新的数组中去
newList.add(book);
}
}
return newList;
}
}