2

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

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

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

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

4

1 回答 1

2

Eclipse Collections 当前没有WeakValueHashMapSoftValueHashMap。我也想不出一种在不实施它们的情况下用最少的样板进行设置的方法。如果您想使用 Eclipse Collections MutableMapAPI 而不是Map,您可以调整ReferenceMap上述内容。

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

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

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

于 2020-09-18T15:05:09.030 回答