这是来自my previous question的后续问题。

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

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

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

显然NavigableMap具有子映射方法以及floorceiling,但是我看不到任何可转换为具有开始时间和结束时间的列表的方法。

最佳答案

要从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

10-01 17:30