【问题标题】:which usses much memory hashset or arrays [closed]它使用了很多内存散列集的数组[关闭]
【发布时间】:2013-02-06 02:35:15
【问题描述】:

我创建了一个名为 randomQueue 的数据类型,它使任何对象入队,并从它随机出列将做一个随机项目生成器 api应该是下面的

enqueue(Item item)
dequeue()
isEmpty()
size()
private resize()
private shrink()

运行时间应摊销 我认为两者的性能在两种实现中应该是相同的,但我想知道内存怎么样,有没有办法计算我的程序使用的内存而不是计算每一行代码的内存使用情况? PS我用java。

【问题讨论】:

  • 随机入队和出队是什么意思?
  • Hashset 是一种概念数据结构。它可以通过多种方式实现。包括数组。这个问题没有意义。
  • 很抱歉,但我的意思是它只是随机出队,我编辑了这个问题。
  • 我的问题是,如果我有两种方法可以通过哈希集或数组来实现队列,考虑到我需要使用更少的内存
  • @MohamedShaban 两者都试,分析,测量,找出答案。

标签: java arrays performance memory hashset


【解决方案1】:

这两种不同的结构在内存消耗方面确实没有明显的优势。哈希集通常会更快地检索数组,因为在数组中您必须遍历所有项,直到找到您要查找的项并将哈希集分组。

【讨论】:

  • 我没有迭代我通过 math.random 方法获取索引并将其缩放到数组的大小
  • 那么就用数组吧。我看不出有什么好的理由在这里使用哈希集,但其他人可能不同意。
【解决方案2】:

假设一个 32 位 HotSpot VM,java.util.HashSet 每个元素大约需要 32 个字节,一个数组大约需要 4 个字节。如果您要重新实现其中一个结构,当然,这些数字不是对你有什么用。

【讨论】:

    猜你喜欢
    • 2015-04-07
    • 1970-01-01
    • 2021-11-16
    • 1970-01-01
    • 2018-12-28
    • 2016-07-25
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多