Java时间到期List/Set?

Rab*_*yte 16 java list set

我一直在寻找一个Java列表,设置或类似的东西,在给定的时间段后有条目到期,但我还没有找到一个.我找到了番石榴CacheBuilder,这对我来说几乎是完美的,但它是一张地图而不是一张清单或一套.有这样的东西,或者如果我想使用它,我是否必须制作一个?

Pad*_*ddy 7

要使用CacheBuilder获取时间过期列表,可以将对象作为键放在地图中,将某些虚拟对象作为值放置.


Abs*_*ind 1

由于 Java HashSet 实现在内部使用 HashMap,因此应该很容易复制/修改代码以使其使用 Guavas CacheBuilder。

public class HashSet<E>
    extends AbstractSet<E>
    implements Set<E>, Cloneable, java.io.Serializable
{
    static final long serialVersionUID = -5024744406713321676L;

    private transient HashMap<E,Object> map;
...
Run Code Online (Sandbox Code Playgroud)

换句话说,只需将您的实现SetWithExpiration作为CacheBuilder从键到键的映射即可。这不会比 JavaHashSet实现使用底层HashMap.

  • 没那么简单。重新发明 `HashSet` 类是一个坏主意,你不能只是“让 HashSet 使用 CacheBuilder 代替” (9认同)