代码之家  ›  专栏  ›  技术社区  ›  Taranfx

如何在Java中创建自己的HASMAP?

  •  3
  • Taranfx  · 技术社区  · 15 年前

    我知道散列算法 hashCode() 将“key”转换成一个等价的整数(使用一些数学上的随机表达式),然后将其压缩并存储到存储桶中。

    但有人能给我指一个应该用作基线的实现或至少是数据结构吗?

    我在网上什么地方都没找到。

    4 回复  |  直到 9 年前
        1
  •  3
  •   Kannan Ekanath    15 年前

    只需使用eclipse和最新的jdk。JAVA核心包源代码附带JDK。打开hashmap类,就可以开始了。一些方法实现可能来自AbstractMap、AbstractCollection等,这是因为正确的OO设计。您可以导航到eclipse中jdk的所有类。

    更新:为什么不打开zip文件而使用eclipe(或ide)? IDE可用于在类之间来回移动,通常有助于“读取”代码。注意并不是所有的方法实现都在一个文件中,比如hashmap.java,所以简单的文本编辑器,比如notepad++,或者textpad可能不够。像eclipse/ide a这样成熟的ide可以使它变得更容易。至少对我有用:)

        2
  •  2
  •   Mark Pope    15 年前

    创建一个实现 java.util.Map 接口并填写给定的方法

        3
  •  1
  •   Tom Neyland    15 年前

    如果您想要一个快速且内存高效的实现,那么您需要使用一个数组来支持您的映射。使用要索引到数组中的哈希算法,并将对象存储在数组的该插槽中。

    有很多小细节你需要注意。何时调整数组大小,如何检测和解决散列冲突等。

    我建议让您的类实现java.util.map,因为它可以让您很好地了解哪些方法是必要和有用的。

        4
  •  1
  •   Rajesh Dixit    9 年前

    创建自己的哈希映射

    http://javaexplorer03.blogspot.com/2015/10/create-own-hashmap.html

    1。数据结构需要存储密钥-值对。 创建一个条目类来存储hashmap条目。 变量:键、值和下一个 下一个变量用于避免使用链接(链表)的hashmap冲突。

    2。小精灵 方法将新项放入HashMap。 使用哈希(hashcode%size)标识bucket

    a. 如果桶中不存在元素: 把它当作 新条目 .

    B. 如果元素已存在: 如果元素重复,则替换旧元素, 否则,找到链中的最后一个元素并将新条目添加到最后一个元素的下一个指针。

    三。get()方法: 返回哈希映射中的元素 a.通过计算键的哈希(hashcode%size)来标识元素桶,并使用equals方法返回元素。