【问题标题】:Java Array of Linked ListsJava 链表数组
【发布时间】:2012-07-31 10:15:24
【问题描述】:

我正在尝试编写一个允许多个值的自定义哈希表。

我们的做法如下:

  1. 创建一个大小为 Integer_MAX(自定义链表)的链表数组。
  2. 将值(整数)插入到编号为键编号的链接列表中。

表示结构如下:

value1 -> value6
NULL
Null
value3 -> value7
Null
...
...(until Int-Max)

现在,由于我们将存储近 5 亿个键值对,因此将浪费至少 16 亿个链接列表。

现在,根据我工作地点的建议,我正在尝试构建具有如下结构的哈希表:

1 -> value1 -> value6
0
0
1 -> value3 -> value7  // here 0/1 bit defines linked lists exits or not
0
...
...(until Int-Max)

任何人都可以帮助我建立这样的结构吗?

编辑:

  1. Why we are trying to do this can be found here.
  2. 当前代码(Louis Wasserman)可以是found here

【问题讨论】:

    标签: java


    【解决方案1】:

    您不能创建泛型类型的数组,因为数组是具体类型。泛型是通过擦除实现的。

    【讨论】:

    • 尝试使用 ArrayList。它的性能应该与数组接近。
    • 但是如果我定义 arraylist(Int-Max) 它会像数组一样影响。对不起,更多的是作为对象。
    • 我不太清楚你到底想做什么。您想在当前实现中减少null 链接的数量吗?您是否只想在某些条件下存储链接?
    • 是的。但是,由于stackoverflow.com/questions/11765517/…,没有减少 Int-Max 的大小(意味着 O(1) 复杂度)。
    • 我可以建议使用带有 2 个子类的抽象节点类 CustomHashMap.AbstractNode - CustomHashMap.EmptyNodeCustomHashMap.NotEmptyNodeCustomHashMap.EmptyNode 应该是单例,里面没有数据。因此,您将进行额外的实例检查,但会减少内存使用量。如果我错了或没有再次理解您的问题,请纠正我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多