灰太狼大王讲java之hashcode()方法
2013-04-27 17:41
267 查看
一开始接触到hashcode()方法时真有点理解不了,找了点资料看看啊,还是觉得不深入。等到把集合的内容都过了一遍时豁然觉得开朗起来,原因是对集合有了一个全面的认识,hashcode()方法自然也容易理解起来。所以,灰太狼大王建议如果你对hashcode()方法还是有点疑惑,不要在这钻牛角尖,继续深入学习下去,一定会有质的突破。
在仔细分析前,灰太狼大王希望你去看看本大王的另一篇博文《灰太狼大王讲java之集合框架》,不用从头到尾都看完,只需看看那两张图,对结合有一个基本的认识即可。java中的集合分为两类,一类元素可以重复(如List),另一类元素不可以重复(如Set)。元素不可以重复的集合底层是如何实现的呢?学习字符串时,我们都接触过equals()方法,Object类中定义了equals()方法,它判断的是两个引用的地址是否相同,而String类又重写(Override)此方法,判断传入的内容是否相同。如果判断元素是否相同用equals()方法,是否可行?答案是去你的吧,如果集合中的元素很多,让equals()一个一个的比较下来,它肯定不服,是你你服吗?那怎么办?hashcode()就来拯救世界了。哈希算法也称为散列算法,它将数据依特定算法直接指定到一个地址上,当集合要添加新的元素时,首先调用这个元素的hashCode方法,判断地址是否一样,如果不一样把元素直接加进去,如果不一样再调用equals()判断二者内容是否一样,如果一样返回true,则认为两个元素重复了,不加进去。
来看一个示例程序:
package
com.yawanglazi;
import java.util.HashSet;
public class HashSetTest
{
public static void main(String[] args)
{
HashSet set=new HashSet();
Student s1 = new Student("
Gray Wolf the King
");
Student s2 = new Student("
Gray Wolf the
在仔细分析前,灰太狼大王希望你去看看本大王的另一篇博文《灰太狼大王讲java之集合框架》,不用从头到尾都看完,只需看看那两张图,对结合有一个基本的认识即可。java中的集合分为两类,一类元素可以重复(如List),另一类元素不可以重复(如Set)。元素不可以重复的集合底层是如何实现的呢?学习字符串时,我们都接触过equals()方法,Object类中定义了equals()方法,它判断的是两个引用的地址是否相同,而String类又重写(Override)此方法,判断传入的内容是否相同。如果判断元素是否相同用equals()方法,是否可行?答案是去你的吧,如果集合中的元素很多,让equals()一个一个的比较下来,它肯定不服,是你你服吗?那怎么办?hashcode()就来拯救世界了。哈希算法也称为散列算法,它将数据依特定算法直接指定到一个地址上,当集合要添加新的元素时,首先调用这个元素的hashCode方法,判断地址是否一样,如果不一样把元素直接加进去,如果不一样再调用equals()判断二者内容是否一样,如果一样返回true,则认为两个元素重复了,不加进去。
来看一个示例程序:
package
com.yawanglazi;
import java.util.HashSet;
public class HashSetTest
{
public static void main(String[] args)
{
HashSet set=new HashSet();
Student s1 = new Student("
Gray Wolf the King
");
Student s2 = new Student("
Gray Wolf the
相关文章推荐
- 灰太狼大王讲java之静态方法
- Java——==、equals()与hashCode()方法详解
- Java中的equals和hashCode方法详解
- java覆盖equals()方法时总要覆盖hashCode()
- Java中的equals方法和hashcode方法
- Java基础知识点2:hashCode()方法
- java复习(6)—HashCode与equals方法的关系
- Java基础篇 ---- hashCode() 和 equals() 方法
- [Java]hashCode和equals方法的比较
- Hash表及java中的equals和hashcode方法(2)
- Java 中 hashCode 和 equals 方法 小结
- Java提高篇——equals()与hashCode()方法详解
- 浅谈Java中的hashcode方法
- Java 中正确使用 hashCode 和 equals 方法
- Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例
- Java 中正确使用 hashCode 和 equals 方法
- 学习笔记-JAVA-考点10-什么情况下需要重写equals和hashcode()两个方法?
- Java中equals方法和hashCode方法
- JAVA中重写equals()方法的同时要重写hashcode()方法
- Java 中equal() 方法与==的区别以及 equals()与 hashCode()方法重写