本帖最后由 黄玉昆 于 2013-2-24 13:00 编辑
毕老师在将HashSet的时候,说存入顺序是按照哈希值的顺序存入的,是不是按照哈希值的大小进行依次排列的呢?那读取也应该是按照存入的顺序或者倒叙取出的才对,我不知道这样理解是不是正确的。
如果不是的话,是具体按什么顺序存的呢?如果是这样的话,那么为什么我反复测试,都不是按大小顺序取出的呢?
测试如下:- <font size="1" face="Arial">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()
- {
- return name;
- }
- public int getAge()
- {
- return age;
- }
- public int hashCode()
- {
- //System.out.println(this.name + "--hashCode--");
- System.out.println(this.name + "--" + (this.name.hashCode()+age*39));
- return this.name.hashCode()+age*39;
- }
- public boolean equals(Object obj)
- {
- if (!(obj instanceof Person))
- return false;
- Person p = (Person)obj;
- //System.out.println(this.name + "--equals--" + p.name);
- return this.name.equals(p.name) && this.age == p.age;
- }
- }
- class HashTest
- {
- 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));
- hs.add(new Person("a3",13));
- Iterator it = hs.iterator();
- while (it.hasNext())
- {
- Person p = (Person)it.next();
- sop("-------");
- sop(p);
- sop(p.getName() + "--" + p.getAge());
- }
- }
- }</font>
复制代码 结果如图:
|
|