- package day14.collectionDemo;
- import java.util.ArrayList;
- import java.util.Iterator;
- class Person{
- private String name;
- private int age;
- Person(String name,int age){
- this.name = name;
- this.age = age;
- }
- public void setAge(int age){
- this.age = age;
- }
- public void setName(String name){
- this.name =name;
- }
-
- public String getName(){
- return name;
- }
- public int getAge(){
- return age;
- }
- // 为什么要重写equals 方法呢?
- 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 class ArrayListText2 {
- public static void main(String []args){
- ArrayList al = new ArrayList();
- al.add(new Person("liwu1",32));
- al.add(new Person("liwu2",32));
- al.add(new Person("liwu3",32));
- al.add(new Person("liwu4",32));
- al.add(new Person("liwu1",32));
- // 掉用方法。去掉重复
- al =singleElements(al);
- // 生成一个迭代器。
- Iterator it = al.iterator();
- while(it.hasNext()){
- Person p = (Person)it.next();
- System.out.println(p.getName()+"..."+p.getAge());
- }
- }
-
- public static ArrayList singleElements(ArrayList al2){
- // 定义一个临时容器。
- ArrayList newAl = new ArrayList();
-
- Iterator it = al2.iterator();
-
- while(it.hasNext()){
-
- Object obj = it.next();
- // 这contains怎么比较这个集合中是否包含这个对象?
- if(!newAl.contains(obj)){
- newAl.add(obj);
- }
- }return newAl;
- }
- }
复制代码
如代码所示:这个一个集合中除去重复的对象。
问题1:我的Person类中为什么要重写 equals()方法。
为什么重写。确去不掉重复呢?关键是,我又没有在什么地方调用这个 equals()方法。
问题2:contains 里面判断集合是否包含 对象。是怎么判断呢? |
|