从Groovy中的列表中提取对

Mic*_*das 2 groovy

我需要从Groovy中的列表中提取周围元素对,以便断言通过:

assert pairs([1, 2, 3, 4]) == [[1, 2], [2, 3], [3, 4]]

def pairs(List list) {
  //...
}
Run Code Online (Sandbox Code Playgroud)

我目前的实施如下:

def pairs(List list) {
    def result = []
    for (int i = 0; i < list.size() - 1; i++) {
        result += [[list[i], list[i + 1]]]
    }
    result
}
Run Code Online (Sandbox Code Playgroud)

是否有针对该问题的更多功能性或常规解决方案?

tim*_*tes 5

做就是了:

def pairs(List list) {
    list.collate(2, 1, false)
}
Run Code Online (Sandbox Code Playgroud)

这意味着"将它们分组为2组,每次沿输入列表1条目滑动,并删除任何小于2的组" 并且您将获得预期结果...无需删除或合并或添加