gpt4 book ai didi

java - "Closed"Java/Scala 中的 HashMap

转载 作者:搜寻专家 更新时间:2023-11-01 01:22:33 27 4
gpt4 key购买 nike

使用 HashMap 时,性能瓶颈通常是 equals 方法。 equals 对于深层数据结构来说可能非常昂贵。

请注意,以下内容是关于不可变 HashMap 的。因此,至少您永远不会删除 key 。我认为添加 key 应该没问题。

不安全get

假设您查询一个散列映射,确定它包含查询的键。然后,如果给定键没有冲突,则可以仅根据哈希命中返回找到的单个条目,因为它必须是查询的对象。

这可以避免在大多数情况下(没有碰撞时)在get中调用equals

问题

  1. 这个概念怎么称呼?
  2. 是否有任何可用于 Java 或 Scala 的 HashMap 实现支持这种不安全的 get 操作?

顺便说一句,我愿意听取有关更好主题行的建议。

最佳答案

How is this concept called?

身份映射。它不会在查找元素时调用 equals() 并仅使用标识(即 ==)。

正确的解决方案不是“修复” map ,而是仅使用使用默认 Object.equals() 的键:

public boolean equals( Object other ) { return this == other; }

问题在于,除非所有键都是单例,否则在此映射中查找元素可能会有问题。因此,您不能使用 String,例如,因为 Java 不保证所有字符串实例都被保留。 Integer 也是如此:实例 < -128 和 > 127 将不同。

但是如果你使用你自己的键优化实现,你可以解决这个问题。

关于java - "Closed"Java/Scala 中的 HashMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13451881/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com