【发布时间】:2022-01-24 03:45:14
【问题描述】:
我有一个 Java 类,它在 HashMap 中存储通用 Object 类型:
private final Map<Object, NetworkMarker> packetMarker = new WeakHashMap<>();
packet 对象非常大,map 的吞吐量非常高,因此单独对数据包进行哈希处理就占用了荒谬的 cpu 周期,我很好奇是否可以将其最小化,或者我只需要更好的硬件。
是否有一种方法可以覆盖 hashCode 函数以使其更高效,尽管它是一个没有包装器的通用 Object 类,或者可能扩展 hashmap 以增强 #get() 方法?或者我忽略的任何其他方法!
干杯!
编辑澄清:packet 对象未键入。它的类型为Object。它是从外部源传入的,所以我无法分配类型。
【问题讨论】:
-
您应该详细解释一下“
packet对象”。它是什么课?为什么Map不是Map<Packet, NetworkMarker>?对数据包进行散列处理使其如此昂贵的原因是什么?packetequals方法是什么样的。我不明白您正在考虑覆盖哪个类的hashCode。 -
packet对象实际上是一个通用的Object。它是从另一个来源传入的,因此我无法将其分配或强制转换为类型。每种方法都是现货Object# -
如果它实际上是一个对象,那么它的 hashCode 实现应该很快。但是你的意思是说它的具体类型是变化的,并且只以 Object 为界,在这种情况下@shmosel 的包装器听起来是一个不错的计划?
标签: java performance hash hashmap