参考这个问题:How to subtract dates from each other
在Groovy中,我有一个脚本可以从文本文件集中吐出5个最大的值。我怎么知道这些值的索引是什么?
答案 0 :(得分:0)
如果您有一系列事项,例如:
def list = [ 'c', 'a', 'b' ]
了解原始索引的一种方法是使用transpose()
将此列表连接到计数器,然后对新列表进行排序,然后您将获得一个以原始索引作为次要元素的排序列表
即:
[list,0..<list.size()].transpose().sort { it[0] }.each { item, index ->
println "$item (was at position $index)"
}
打破这种局面;
[list,0..<list.size()]
为我们(有效)提供了一个新列表[ [ 'c', 'a', 'b' ], [ 0, 1, 2 ] ]
在此处调用transpose()
会给我们:[ [ 'c', 0 ], [ 'a', 1 ], [ 'b', 2 ] ]
然后我们根据每个元素中的第一个项目(原始列表中的字母)对列表进行排序sort { it[0] }
然后遍历每个,打印出我们现在已排序的项目及其原始索引位置
答案 1 :(得分:0)
如果值是唯一的,您可以在原始列表中使用indexof
方法。例如,如果您有列表:
def list = [4, 8, 0, 2, 9, 5, 7, 3, 6, 1]
你知道如何获得5个最大值:
def maxVals = list.sort(false, {-it}).take 5 // This list will be [9, 8, 7, 6, 5]
然后你可以这样做:
def indexes = maxVals.collect { list.indexOf it }
println indexes
它会打印出来:
[4, 1, 6, 8, 5]