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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 一帆风顺 中级黑马   /  2012-12-11 09:02  /  1908 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王博 于 2012-12-11 15:24 编辑

import java.util.*;
class Person
{
       private String name;
       private int age;
       Person(String name,int age)
       {
              this.name=name;
              this.age=age;
       }
       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 String getName()
       {
              return name;
       }
       public int getAge()
    {
              return age;
       }
}
class  ArrayListTest2
{
       public static void main(String[] args)
       {
              ArrayList al = new ArrayList();
              al.add(new Person("List01",30));
              al.add(new Person("List02",32));
              al.add(new Person("List03",33));
              al.add(new Person("List02",32));
              al=singleElement(al);
              Iterator it =  al.iterator();              
              while (it.hasNext())
              {
                     Person p=(Person)it.next();
                     System.out.println(p.getName()+"..."+p.getAge());
              }
       }
       public static ArrayList singleElement(ArrayList al)
       {
              ArrayList newAl = new ArrayList();
             Iterator it = al.iterator();
              while (it.hasNext())
              {
                     Object obj=it.next();
                     if (!newAl.contains(obj))
                     {
                            newAl.add(obj);
                     }
              }
              return newAl;
       }     
}

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
public boolean equals(Object obj)
       {
             /*
             *这里是判断obj 这个对象的类型是否是Person该类类型,如果是就运行该语句体。这里的条件是当obj 这个对象属于Person时,为真之后在取反。其实我个人觉得
             * 只要理解我这句话的意思就可以了。至于你想要更详细的答案,可以到百度上百度instanceof就会有很多先辈门的讲解的
             */
             if (!(obj instanceof Person))           
              {                                                 //能否详细讲解一下
                     return false;
              }
              Person p=(Person)obj;
              return this.name.equals(p.name)&&this.age==p.age;
       }
回复 使用道具 举报
老师之前的视频里面提到过的,就是类型判断。
boolean  obj instanceof Person  返回值是boolean类型

obj是Person类型的话就是真,反之就是假。
回复 使用道具 举报
f (!(obj instanceof Person))           //这里是什么意思啊??毕老师讲的时候没有听懂啊??
              {                                                 //能否详细讲解一下
                     return false;
              }


就是判断obj是否是Person对象  如果是返回true 不是返回false
回复 使用道具 举报
这个就是判断传进来的数据是不是属于Person类型,如果是,继续下面的执行,不是返回false
回复 使用道具 举报
这是没使用泛型前的例子:
equals是判断两个对象是否相等,但如果两个对象不同,连比较性都没有操作就是没有任何意义的,
毕老师只是为了讲课的效率return false,但应该抛RuntimeException异常
但这里问个问题,谁能回答就帮忙回答下吧,有些书上说,设计程序应该避免不处理异常,但如果有必须
抛RuntimeException类异常的话,如何处理,捕获RuntimeException类异常有意义吗?怎么让程序员知道
发生了什么异常呢?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马