【发布时间】:2012-09-12 12:45:03
【问题描述】:
我想获取地图的最后 X 个条目。
如果我想获得第一个条目,它可以在 groovy 中相当容易地完成:map.take(10) 让我获得地图的前 10 个条目。但是如何获得最后 10 个条目?没有map.reverse() 方法。
【问题讨论】:
我想获取地图的最后 X 个条目。
如果我想获得第一个条目,它可以在 groovy 中相当容易地完成:map.take(10) 让我获得地图的前 10 个条目。但是如何获得最后 10 个条目?没有map.reverse() 方法。
【问题讨论】:
你可以像这样使用drop:
map.drop( map.size() - 10 )
删除最后 10 个元素以外的所有元素
另一种方法是使用iterator,可以颠倒:
map.iterator().reverse().take( 10 ).reverse().collect()
但它更混乱,并且使用更多资源
【讨论】:
LinkedHashMap 应该添加一个reverse 方法,因为它确实具有顺序的概念。如果我有时间,我会尝试提出一个补丁
reverseEach就够了。在这种情况下,它不是 :-(
map.drop 在这里工作,但是将它嵌入到 groovy 中的一个长 gsp 表达式中,其中 map 是一个 50 个字符的表达式有点麻烦。如果有reverse() 方法会更紧凑。