【问题标题】:Data Structure Equivalent to hashset but with these changes?数据结构等价于 hashset 但有这些变化?
【发布时间】:2013-11-10 12:19:20
【问题描述】:

我无法在我的场景中使用 hashset。因为如果 HashSet 包含对象,则没有检索对象的功能。
我对 HashSet 的实现是这样的,“equals()”只检查对象的某个属性。其他属性可能会有所不同。因此,如果一个对象 contains() 我正在搜索的对象,即如果特定属性匹配,我想检索该对象并比较其他属性。但是没有检索对象的功能,只有删除它的功能。

是否有任何替代方案可以满足我的要求?

【问题讨论】:

    标签: java data-structures hashset


    【解决方案1】:

    您可以使用哈希映射来代替具有 get 方法的 eq HashMap<Your_Class, Your_Class>

    【讨论】:

    • PriorityQueue 有没有这样的替代方案?即使这样也没有 getMethod。
    • 但是 PriorityQueue 是堆数据结构的实现。从该结构中,您应该只获取顶部的元素(最小值或最大值取决于 PQ 类型)您可以根据需要使用这两种方法: - peek() 检索但不删除此队列的头部,或者如果返回 null这个队列是空的。 - poll() 获取并移除此队列的头部,如果此队列为空,则返回 null。
    • 但是 peek() 只检索树顶部的对象。如果对象存在于 PriorityQueue 中,我想检索它并比较其他一些属性。我也使用 poll() 功能。
    • en.wikipedia.org/wiki/Heap_(data_structure) 你没有使用 PQ 来解决正确的问题。也许你可以结合两种数据结构来解决你的问题:HashMap 用于更快地检索,PQ 用于检索最小元素
    【解决方案2】:

    您也可以考虑内部模式。 There are libraries that already have it.

    Guava 版本是线程安全的,这可能不利于性能...

    【讨论】:

      猜你喜欢
      • 2020-10-10
      • 2010-10-15
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-14
      相关资源
      最近更新 更多