本帖最后由 李政 于 2013-7-20 01:47 编辑
/*
举个例子,如果定义了一个学生类,并且重写了hash值,
并将学生类对象存入hashset集合中,那么应该是hash值小存入到集合的前面
编译下面的代码,发现是102 103 12 13,为什么?
hash值是怎么比较大小的呢
*/
import java.util.*;
class HashDemo
{
public static void main(String[] args)
{
HashSet<Student> ts = new HashSet<Student>();
ts.add(new Student(12));
ts.add(new Student(13));
ts.add(new Student(102));
ts.add(new Student(103));
Iterator<Student> it = ts.iterator();
while(it.hasNext())
{
Student s = it.next();
System.out.println("年龄:"+s.getAge());
}
}
}
class Student
{
private int age;
Student(int age)
{
this.age = age;
}
public void setAge(int age)
{
this.age = age;
}
public int getAge()
{
return age;
}
public int hashCode()
{
return age;//返回年龄大小的hash值
}
public boolean equals()
{
return false;
}
}
有了答案了:hashSet底层是哈希表,是用哈希表的规则来存放的。
至于哈希表的规则是什么,慢慢再了解
|