这是my previous question的后续问题。
我正在尝试实现一个定义为NavigableMap
的{{1}}。我需要这张地图对我来说就像一个缓存。我每5分钟刷新一次NavigableMap<Timestamp, Event>
。
一个线程更新此NavigableMap
,而另一个线程从中读取,因此它必须是线程安全的。每当有请求时,我都需要获取NavigableMap
的子集列表,其时间戳在给定的Events
和start
时间内。
将end
转换为此子集列表(例如NavigableMap
)的最有效方法是什么?这个接口的线程安全实现是什么?
显然,ArrayList
具有子映射方法以及NavigableMap
和floor
,但是我看不到要转换为具有开始时间和结束时间的列表的任何内容。 / p>
答案 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());
此接口的线程安全实现是什么?