我需要一些 Java 集合,它包含 String 值,并且如果元素尚不存在,则具有添加元素的同步方法(类似于addIfAbsent用于 ArrayList)。收集将处于繁忙的交通状态。另外我想有一些超时机制,之后集合中的条目过期。超时应该在 5 秒左右。
对优雅的解决方案有什么建议吗?选择没有超时机制的集合也会有帮助。
谢谢你的帮助。
我需要一些 Java 集合,它包含 String 值,并且如果元素尚不存在,则具有添加元素的同步方法(类似于addIfAbsent用于 ArrayList)。收集将处于繁忙的交通状态。另外我想有一些超时机制,之后集合中的条目过期。超时应该在 5 秒左右。
对优雅的解决方案有什么建议吗?选择没有超时机制的集合也会有帮助。
谢谢你的帮助。
Are you looking to implement some form of caching mechanism? If so, there's no need to reinvent the wheel. You can use some cache implementation, like EhCache.
Please, take a look at this thread: similar question about collections with timeout (caches)
将超时解释为一个时间值,之后将删除插入到集合中的项目,也许Guava Cache 实现适合您的需求?它不直接公开putIfAbsent
方法,但如果需要,您可以使用CacheLoader
或提供 aCallable
来生成值。
String value = cache.get("key", new Callable<String>() { ... });
cache
如果不包含给定的值,将调用可调用对象key
。