本帖最后由 司懿卓 于 2013-1-26 15:12 编辑
先上代码:- /*
- 需求: 根据集合元素内容来对元素进行排序
- 思路...
- */
- import java.util.*;
- class Person
- {
- private String name;
- private int age;
- Person(String name, int age)
- {
- this.name = name;
- this.age = age;
- }
- public String getName() //getName
- {
- return this.name;
- }
- public int getAge() //getAge
- {
- return this.age;
- }
- public boolean equals(Object obj) //重写equals
- {
- if (this == obj)
- return true;
- if (obj != null && obj instanceof Person) //比较对象内容
- {
- Person p1 = (Person)obj;
- if (p1.name == this.name)
- return true;
- return false;
- }
- return false;
- }
- public int hashCode() //重写hashCode
- {
- return this.age;
- }
- }
- public class HashSetDemo
- {
- public static void sop(Object obj) //打印输出
- {
- System.out.println(obj);
- }
- public static void main(String[] args)
- {
- HashSet hs = new HashSet();
- hs.add(new Person("张三", 26));
- hs.add(new Person("李四", 19));
- hs.add(new Person("王五", 18));
- hs.add(new Person("李四", 20));
- for (Iterator it = hs.iterator(); it.hasNext(); ) //迭代器
- {
- Person p = (Person)it.next();
- sop("姓名:" + p.getName() + " 年龄:" + p.getAge());
- //sop(p.hashCode());
- }
-
- }
- }
复制代码 很是郁闷.
其他的看似一切都正常啊, 为什么我重写了hashCode方法后,返回age作为首选排序的条件.
可结果令人大吃一斤... 对,是一斤..
上图!
求解惑~~~!
------------------------------------------------------------------------
自己的问题,已经解决.
谢谢回复的朋友们.. |
|