任何类都继承public int hashCode()方法,该方法返回的值是通过将该对象的内部地址转换为一个整数来实现的,hash表的主要作用就是在对对象进行散列的时候作为key输入。我们需要每个对象的hash码尽可能不同。Object类提供的默认实现确实保证每个对象的hash码不同。
对于集合类HashMap,HashSet和Hash有关的类,是通过hash算法来散列对象的。
对于hashset判断是不是重复对象通过equals方法判断,两个对象equal相等的时候,hashcode的返回值一定相等。
引用类型比较可以使用“==”也可以使用equals。equeals方法来自于Object类,使用“==”比较引用类型时,仅当两个应用变量的对象指向同一个对象时,才返回true,也就是两个变量指向内存地址相等的时候,才返回true。
重写equals方法
在定义一个类的时候,如果涉及到对象的比较,应该重写equals方法,重写的规则:
1。首先“==”判断是否相等
2.判断equals方法的参数是否为null,如果为null,则返回false,因为当前对象不为null。
3.当参数不为null,如果两个对象的运行时类通过getClass()不相同,返回false。