使用 Guava 装饰 Map 使其表现得像 Set

Decorate a Map to behave like a Set using Guava

Google Guava 中是否有实用程序 class 允许我装饰 Map 使其像 Set 一样运行?

HashSet 是使用 HashMap<K, Object> 实现的,其中值始终是 Object 的相同实例。我想对从 LoadingCache:

返回的 Map 做同样的事情
Set<K> mySet = XXX.decorate(CacheBuilder.newBuilder().expireAfterWrite(10, TimeUnit.SECONDS).build().asMap())

为了给我一个Set插入后10秒数据过期

番石榴里有class吗?我见过 ForwardingSet 但它只适用于另一个 Set 实例。

您可以使用 JDK 的 Collections#newSetFromMap(Map<K, Boolean>):

Set<K> mySet = Collections.newSetFromMap(
            CacheBuilder.newBuilder()
                    .expireAfterWrite(10, TimeUnit.SECONDS)
                    .<K, Boolean>build()
                    .asMap());