从NavigableMap中提取列表

时间:2019-01-23 21:41:32

标签: java concurrency hashmap treemap concurrenthashmap

这是my previous question的后续问题。

我正在尝试实现一个定义为NavigableMap的{​​{1}}。我需要这张地图对我来说就像一个缓存。我每5分钟刷新一次NavigableMap<Timestamp, Event>

一个线程更新此NavigableMap,而另一个线程从中读取,因此它必须是线程安全的。每当有请求时,我都需要获取NavigableMap的子集列表,其时间戳在给定的Eventsstart时间内。

end转换为此子集列表(例如NavigableMap)的最有效方法是什么?这个接口的线程安全实现是什么?

显然,ArrayList具有子映射方法以及NavigableMapfloor,但是我看不到要转换为具有开始时间和结束时间的列表的任何内容。 / p>

1 个答案:

答案 0 :(得分:2)

要从NavigableMap中提取键范围,请调用subMap(K fromKey, K toKey)subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)

如果只需要这些值作为列表,请执行以下操作:

List<Event> list = new ArrayList<>(map.subMap(start, end).values());

  

此接口的线程安全实现是什么?

根据javadocConcurrentSkipListMap