Collection中的Set分为HashSet和TreeSet
Set中的元素是无序的,即存入和取出的顺序不一定一致,元素不可以重复。HashSet的底层数据结构是哈希表,元素存入的顺序是按照哈希值来排序的。
那么HashSet是如何保证元素唯一性的呢?
首先我们先直观地看看哈希值的样子
class Demo{
}
public class HashSetTest {
public static void main(String[] args) {
Demo d1=new Demo();
Demo d2=new Demo();
sop(d1);
sop(d2);
}
public static void sop(Object obj){
//定义此sop方法用来快捷输出,在输出较多的情况下尤为快捷。
System.out.println(obj);
}
}
HashCode就长这个样子
这些HashCode是如何产生的呢?
HashSet有一个方法叫做 int hashCode(),会在默认情况下产生无序的16进制hashcode值。
为了让其得到体现,我们可以直接将其重写:
在Demo类中重写hashCode()方法
class Demo{
public int hashCode()
{
return 60;
}
}
public class HashSetTest {
public static void main(String[] args) {
Demo d1=new Demo();
Demo d2=new Demo();
sop(d1);
sop(d2);
}
public static void sop(Object obj){
System.ou