【发布时间】:2019-03-23 15:57:02
【问题描述】:
我有一个TreeMap<Date, Integer>,我想从该地图中获取第 n 个项目。我现在想出的是这样的:
((Integer)myTreeMap.values().toArray()[index]).intValue();
但这感觉很笨拙,更不用说堆上或性能方面发生了什么?
有没有一种简洁的方法可以从TreeMap/SortedMap 中获取第n项?
【问题讨论】:
-
为什么不在树图值上使用流并跳过 n-1 个元素并获取其余元素中的第一个?
-
除非您有自定义实现,否则迭代是知道哪个叶节点是“第 n 个”的唯一方法。
-
默认的 TreeMap 实现不支持。它使用内部
java.util.TreeMap.Values类型来保留不支持基于索引的访问的值。对于键 Set 也是如此。它们确实使获取高于/低于阈值的键值变得容易,也许您可以尝试使用它而不是第 n 个值?