java - 与 Eclipse Collections 中的软值进行映射

标签 java eclipse-collections

我目前正在考虑在我参与的一个项目中整合到一个集合库,尽管我对此缺乏经验,但我真的很喜欢 Eclipse Collections 的外观。

我们拥有的一个具体用例是,我们使用在多个位置具有软值引用的 Map 实现作为简单的缓存。目前,我们使用 Apache Commons Collections 的 ReferenceMap 来实现此目的,例如:

private final Map<Integer, Long[]> cache = new ReferenceMap<>();

当然,这可以用标准 Java HashMap 代替,其中值是一个 SoftReference 实现,但我希望 Eclipse Collections 具有类似的“方便”集合类型或用于此目的的工厂/建筑商。有这样的事吗?或者也许更广泛地表述:如何使用 Eclipse Collections 和最少量的样板文件设置具有软值引用的 Map?

最佳答案

Eclipse Collections 目前没有 WeakValueHashMapSoftValueHashMap。我也无法想出一种在不实现它们的情况下用最少的样板来设置的方法。如果您想使用 Eclipse Collections MutableMap API 而不是 Map,您可以修改上面的 ReferenceMap

private final MutableMap<Integer, Long[]> cache = Maps.adapt(new ReferenceMap<>());

这不会帮助您摆脱 Apache Commons 依赖项,但会让您更接近一致的 API 使用。

如果您有兴趣为 Eclipse Collections 做出贡献,那么 WeakValueHashMapSoftValueHashMap 实现肯定还有空间。

关于java - 与 Eclipse Collections 中的软值进行映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63625672/

相关文章:

javascript - 使用 Google Translate API 进行翻译时排除 HTML 标签

java - Play Framework : Sending CSV file as an attachment

java - 如何将 ByteObjectHashMap 转换/改编为 JDK Map?

java - Eclipse Collections - Sets 是否有 containsAny() 方法?

java - 在 Java 中对 Stripes 框架的 Ajax 调用会导致请求正文为空

java - ant build.xml 不存在。构建失败

java - 为什么大多数 Eclipse 集合类型都是可序列化的?

java - 如何防止 STRUTS 保留选择?

java - 了解 Fastutil 内部的资源