在 Eclipse 集合中映射软值

Map with soft values in Eclipse Collections

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

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

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

当然这可以用标准 Java HashMap 代替,其中值是 SoftReference 实现,但我希望 Eclipse Collections 具有类似的“便利”集合类型或 factory/builder 为此目的。有这样的事吗?或者更广泛地说:我如何使用 Eclipse Collections 和最少数量的样板文件设置具有软值引用的地图?

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 实现的空间。