【问题标题】:Number of times a certain value appear in a hastable某个值在哈希表中出现的次数
【发布时间】:2013-11-27 21:35:12
【问题描述】:

我的问题是,我有一个包含大约 1000000 个条目的哈希表,我需要找出某个值在哈希表中出现的次数。

key1-->val1
key2-->val2
key3-->val3
key4-->val1
key5-->val1

output:
val1==3
val2==1
val3==1

我可以在不同的键下存储相同的值吗?如果可能的话,我怎样才能有效地找到出现的次数?

【问题讨论】:

  • 顺便说一下,Hashtable 本身在 Java 中已经过时了。使用其他键/值对机制,例如 Map

标签: java hashtable


【解决方案1】:

是的,一个哈希表可以在不同的键下存储相同的值。在 Java 中,您可以调用 Hashtable#values 方法来获取该哈希表中的所有值。然后,您可以使用它来计算某个值出现的次数。

鉴于哈希表的大小(100 万个条目),我会寻找更有效的解决方案(如 @Vivin Paliath 提出的解决方案)。

【讨论】:

    【解决方案2】:

    是的,您可以在不同的键下存储相同的值。为了计算出现次数,我可能会维护一个将值映射到计数的辅助映射。每次将值插入第一个映射时,您都会检查它是否在第二个映射中具有条目。如果是这样,您可以简单地增加计数。否则,您插入一个计数为1 的新条目。

    【讨论】:

    • 如果我需要找到它而不在开始时做这样的增量怎么办?
    • 那你就做不来了。
    • @Nadeeshaan 然后您将不得不构建一次地图,然后再对其进行维护。初始成本会很昂贵,但后续更改不会。
    猜你喜欢
    • 2023-03-08
    • 2017-04-04
    • 2021-03-17
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 2020-07-18
    相关资源
    最近更新 更多