gpt4 book ai didi

java - 缓存 Set 时最好的标识符是什么? Set的hashCode计算什么时候发生?

转载 作者:行者123 更新时间:2023-11-30 05:01:20 25 4
gpt4 key购买 nike

实现集合缓存的最佳方法是什么?特别是,什么是缓存的最佳 key ?

在静态工厂方法中,我想包含一个缓存机制,以便我可以重用现有的(不可变的)对象。这种重用不应带来显着的性能损失。这个类的关键数据是一个参数化的LinkedHashSet。我想知道使用这个 Set 的 hashCode 作为缓存(HashMap)的键是否明智,因为在 java 文档中它说:“集合的哈希码被定义为集合中元素的哈希码之和”。这不是一个缓慢的过程吗?什么时候计算的?集合生成后立即生成还是按需生成?难道这实际上不会消耗掉我期望通过缓存获得的大量性能提升吗?

此外,hashCode 是一个 int,但 HashMap 不接受基元,因此这涉及到 Integer 的装箱,对吧?

我当前的方法是维护一组额外的现有对象集的长度。工厂方法将首先检查当前集合的长度是否已列出,然后才在实际索引中查找。但这也涉及到拳击……

有更好的解决方案吗?

最佳答案

您需要使用一些不变量作为每个集合的键,从逻辑上定义该集合的内容。

考虑创建一个 NamedSet,或者使用简单的 Delegator 包装现有的集合实现,或者对其进行子类化(如果它不是最终的)。然后,您可以提供额外的键或名称字段来标识该集并将其用作缓存的键。

关于java - 缓存 Set 时最好的标识符是什么? Set的hashCode计算什么时候发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6609845/

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