关于以下代码程序,请教大家一个问题:
在类ArrayListdemo2中,我加/**/注释的部分,理解的对不对,如果不对,请高手指点!
-------------------------ArrayListdemo2 .java--------------------------------
import java.util.*;
/*使用ArrayList 实现去除集合中重复的元素,其中以人为对象插入,元素为姓名、年龄,比如两个姓名和年龄相同的人,需要排除
*分析:1、对人进行描述,然后封装
* 2、定义容器,将人存入
* 3、判断相同,取出
* */
public class ArrayListdemo2 {
public void run(){
ArrayList al = new ArrayList();
al.add(new Person("lisi01",21));
al.add(new Person("lisi02",22));
al.add(new Person("lisi01",21));
/*调用已经写好的去除重复的元素类,这个类中用到了contains,集合是否包含某个元素
* 分析:contains在帮助说明里可以出,底层是调用了equals,进行判断,equals属于相当于两个对象是否相等
* 现在属于人的对象,每插入一个人,就属于一个对象,这里判断的是 对象.equaal(对象),由于都是新创新建的,
* 所以都不相等,所以在调用onlyElement的方法中contains进行比较,没有排除对于元素是否相等的数据。
*
* 由于Object 父类中的equals不满足此需求中的应用,所以在以下进行重写equals方法
*/
al = new ArrayListdemo().onlyElement(al); //由于这里面装的是al集合,而al集合里装的是Person对象,所以在Person里重写equals方法
Iterator it = al.iterator();
while(it.hasNext()){
Person p =(Person) it.next();;
pl(p.getName()+"......"+p.getAge());
}
}
public void pl(Object obj){
System.out.println(obj);
}
}
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(Object obj){
/*
* 重写object类中的equals()方法
* 1、首先判断obj对象是否属于Person类,如果不属于则返回false
* 2、如果属于,将obj对象降序为Person对象P,即强制转换。
* 3、返回本类的name字符串是否与对象p.name字符串是否相等,并且本类的age与p.age是否相等
* 4、如果3满足条件,则返回true,否则返回false
* */
if(!(obj instanceof Person)){
return false;
}
Person p = (Person)obj;
return this.name.equals(p.name) && this.age == p.age;
}
}
-------------------ArrayListdemo .java---------------------------------------------------------------
import java.util.*;
//在ArrayList对象中,排除相同的元素,只保留唯一元素
public class ArrayListdemo {
public ArrayList onlyElement(ArrayList obj){
ArrayList al = new ArrayList();
Iterator it = obj.iterator();
while(it.hasNext()){
Object ob = it.next();
if(!al.contains(ob)){
al.add(ob);
}
}
return al;
}
}
--------------------------------------------主类---------------------------
import java.util.*;
public class CollectionMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
//sop1();
//sop2();
new ArrayListdemo2().run();
} |
|