黑马程序员技术交流社区

标题: 老毕的视频不祥处!!! [打印本页]

作者: 李利威    时间: 2014-8-6 00:13
标题: 老毕的视频不祥处!!!
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中!!!要详解
作者: 依然超级赛亚人    时间: 2014-8-6 08:54
本帖最后由 依然超级赛亚人 于 2014-8-6 09:08 编辑

equals()定义在person中应该是专门为了person类的对象服务的,其他的类(person有子父类的话除外)无法调用这个方法,这道题中只有person类的对象使用到equals(),应该定义在person类中。至于怎么调用equals()的,上面写得比较清楚了,用的是this.name这个引用对象调用的啊,有其他疑问吗?
作者: 贾浩田    时间: 2014-8-7 11:03
应该是contains方法隐式调用了专门用来判断person对象是否相等的equals方法。另外这个代码缺少主函数啊,有点没看懂




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2