本帖最后由 赵彦丰 于 2014-3-25 15:19 编辑
我的理解 如果不对请指正 下面的代码总找三点:
第一点 存到集合中 是Object的
第二点 取出数据是通过Person 中的方法取出得 所以就必须吧Object 转 成Person
第三点 就是强制转换了
- /*
- *
- * 往hashSet集合中存入自定对象
- * 姓名和年龄相同为同一个人,重复元素
- * */
- import java.util.*;
- class HashSetTest
- {
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- public static void main(String[] args)
- {
- HashSet hs = new HashSet();//第一点
- hs.add(new Person("a1",11));
- hs.add(new Person("a2",12));
- hs.add(new Person("a3",13));
- hs.add(new Person("a2",12));
-
- sop(hs.remove(new Person("a1",11)));
-
- Iterator it = hs.iterator();
- while(it.hasNext())
- {
- Person p = (Person)it.next();//第三点
- sop(p.getName()+"---"+p.getAge());
- }
-
-
- }
-
-
- }
- class Person
- {
- private String name;//第二点
- private int age;
- Person(String name,int age)
- {
- this.name = name;
- this.age = age;
- }
-
- public int hashCode()
- {
- System.out.println(this.name+"--hashCode");
- return name.hashCode()+age;
- }
-
- public boolean equals(Object obj)
- {
- if(!(obj instanceof Person))
- return false;
- Person p = (Person)obj;
- System.out.println(this.name+"----"+p.name);
-
- return this.name.equals(p.name) && this.age == p.age;
- }
-
- public String getName()
- {
- return name;
- }
-
- public int getAge()
- {
- return age;
- }
- }
复制代码 |