如何解决使用Eclipse集合中的软值进行映射
我目前正在考虑将其整合到我所参与的项目中的单个集合库中,尽管我对此经验很少,但我非常喜欢Eclipse Collections的外观。
我们拥有的一个具体用例是,我们在多个地方使用Map
实现和软值引用作为简单的缓存。我们目前为此目的使用Apache Commons Collections的ReferenceMap
,例如:
private final Map<Integer,Long[]> cache = new ReferenceMap<>();
当然可以用标准Java HashMap
代替,其中的值是SoftReference
的实现,但是我希望Eclipse Collections为此具有类似的“便捷”集合类型或工厂/构建器目的。有这样的事吗?或更广泛地讲:我将如何使用Eclipse集合和最少的样板设置具有软值引用的Map?
解决方法
Eclipse集合当前没有WeakValueHashMap
或SoftValueHashMap
。我也想不出一种方法,即在不实施这些示例的情况下使用最少的模板进行设置。如果要使用Eclipse Collections MutableMap
API而不是Map
,则可以改写上面的ReferenceMap
。
private final MutableMap<Integer,Long[]> cache = Maps.adapt(new ReferenceMap<>());
这不会帮助您摆脱Apache Commons依赖关系,但是使您更接近一致的API使用。
如果您有兴趣为Eclipse Collections做贡献,那么WeakValueHashMap
和SoftValueHashMap
实现肯定有空间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。