A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李利威 中级黑马   /  2014-8-6 00:13  /  1335 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package cn.itcast;

import java.util.ArrayList;
import java.util.Iterator;

class personn
{
  private String name;
  private int age;
  personn(String name,int age)
  {
        this.name=name;
        this.age=age;
  }
  public boolean equals(Object obj)
  {
          if(!(obj instanceof personn))
             return false;
          personn p=(personn)obj;
          return this.name.equals(p.name)&&this.age==p.age;
  }
  //--------gs--------------
public String getName() {
        return name;
}
public void setName(String name) {
        this.name = name;
}
public int getAge() {
        return age;
}
public void setAge(int age) {
        this.age = age;
}
  
}
public class Demo6 {

        /**
         * @param args
         */
        public static void main(String[] args) {
        ArrayList arr=new ArrayList();
        arr.add(new personn("lishan",23));
        arr.add(new personn("lishi",23));
        arr.add(new personn("liwu",25));
        arr.add(new personn("lishan",23));
        arr.add(new personn("lishi",23));
        arr.add(new personn("liliu",34));
        arr.add(new personn("liqi",100));
        Quc q=new Quc();
        arr=q.show(arr);
        //System.out.println(arr);
        Iterator it=arr.iterator();
        while(it.hasNext())
        {
                personn pp=(personn)it.next();
                System.out.println("姓名:"+pp.getName()+"  年龄:"+pp.getAge());
        }
        }

}
class Quc
{
    private ArrayList li;
    Quc()
    {
            li=new ArrayList();
    }
    public ArrayList show(ArrayList st)
    {
            Iterator it=st.iterator();
            while(it.hasNext())
            {
               Object obj=it.next();
               if(!li.contains(obj))
               {
                       li.add(obj);
               }
            }
            return li;
    }
}



请问他是怎么调用personn中的equals的!为什么定义在personn中!!!要详解

2 个回复

倒序浏览
本帖最后由 依然超级赛亚人 于 2014-8-6 09:08 编辑

equals()定义在person中应该是专门为了person类的对象服务的,其他的类(person有子父类的话除外)无法调用这个方法,这道题中只有person类的对象使用到equals(),应该定义在person类中。至于怎么调用equals()的,上面写得比较清楚了,用的是this.name这个引用对象调用的啊,有其他疑问吗?
回复 使用道具 举报
应该是contains方法隐式调用了专门用来判断person对象是否相等的equals方法。另外这个代码缺少主函数啊,有点没看懂
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马