2

私は現在、自分が関与しているプロジェクトで単一のコレクション ライブラリに統合することを検討しています。統合の経験はほとんどありませんが、Eclipse コレクションの外観が非常に気に入っています。

具体的な使用例の 1 つはMap、いくつかの場所で単純なキャッシュとしてソフト値参照を使用する実装を使用することです。ReferenceMap現在、この目的のために Apache Commons Collections を使用しています。たとえば、次のようになります。

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

もちろん、これHashMapは値がSoftReference実装である標準の Java に置き換えることができますが、この目的のために、Eclipse Collections に同様の「便利な」コレクション型またはファクトリ/ビルダーがあることを望んでいました。そのようなことはありますか?または、より広く定式化された場合: Eclipse コレクションと最小限のボイラープレートを使用して、ソフト値参照を使用して Map を設定するにはどうすればよいでしょうか?

4

1 に答える 1

2

WeakValueHashMap現在、Eclipse コレクションにはまたはがありませんSoftValueHashMap。また、それらを実装せずに最小限のボイラープレートでセットアップする方法を考えることもできません。の代わりにEclipse Collections MutableMapAPIを使用する場合Mapは、上記を適応させることができますReferenceMap

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

これは、Apache Commons の依存関係を取り除くのに役立ちませんが、一貫した API の使用に一歩近づきます。

WeakValueHashMapEclipse Collections への貢献に興味があるなら、実装の余地は確かにありSoftValueHashMapます。

于 2020-09-18T15:05:09.030 に答える