zoukankan      html  css  js  c++  java
  • hash

    学习需要系统,但是系统的学习是自己完善而得来的。

    不依托业务,不切合工作,不实践的学习,都是无效的学习。

    因为,今天下班的时候,从公司走回住的地方,和逗逼同事无聊的聊了很久。所以,今天来写点关于:hash的话题吧。

    object 中的 hashcode(),是内存地址的映射(不严谨,但是好记,唯一性)。equals(),比较的是对象的内存地址映射是否相等。

    原则:如果两个对象相等,那么两个对象的hashcode也应当相等。因此,重写equals,就必须重写hashcode。

    hash相关的Java API,hashMap,hashSet等散列集合内部会建立自己的hash链,该hash链,用于索引对应hash集合,使遍历更加高效。

    如果对象的equals相等,而hashcode不相等,那么散列集合在增、删、改元素时,就会出错。

    原因为(以删为例子):删除散列集合中的元素,

      1:对元素进行hashcode计算。

      2:用得到的hashcode在散列集合索引链中进行查找(非遍历式,而是匹配式,智能到索引中相近的地方进行对比)

      3:对象的equals相等,而hashcode不相等,那么就无法完成删除动作。造成内存泄漏。

    剩余部分,你懂的。 

  • 相关阅读:
    第k小元素学习记录
    线段树学习笔记
    数论方面的知识积累
    javascript 例子
    数据绑定以及Container.DataItem的具体分析
    C#委托和事件
    C#中的特性(Attributes)(翻译)
    gridview和repeater中取得行的序号
    理解 Ajax 及其工作原理,构建网站的一种有效方法
    JS数组对象参考
  • 原文地址:https://www.cnblogs.com/chen--biao/p/5392654.html
Copyright © 2011-2022 走看看