Из ваших комментариев я понял, что вы хотите добиться этого:
def list = [
"PA1-03-22", "last_name_1", "first_name_1",
"PA1-03-23", "last_name_2", "first_name_2",
"PA1-03-22", "last_name_3", "first_name_3"
]
listnew = list.findIndexValues { it == 'PA1-03-22' }
listlast = []
if (listnew.size() == 1) {
Integer index = listnew[0] + 1
listlast = list[index]
} else {
listnew.each {
def element = list[it + 1]
listlast << element
}
}
Проблема в том, что it
в этой части вашего кода:
.collect { it.count == 1 ? it+2 : it+1}]
относится к элементам:
list.findIndexValues { it == 'PA1-03-22' }
А именно [0]
и именно поэтому вы получаете ошибку.
Я не использовал iReport, но вы можете обернуть его в закрытие следующим образом:
def result = {
def list = [
"PA1-03-22", "last_name_1", "first_name_1",
"PA1-03-23", "last_name_2", "first_name_2",
"PA1-03-24", "last_name_3", "first_name_3"
]
listnew = list.findIndexValues { it == 'PA1-03-22' }
listlast = []
if (listnew.size() == 1) {
Integer index = listnew[0] + 1
listlast = list[index]
} else {
listnew.each {
def element = list[it + 1]
listlast << element
}
}
listlast
}
println(result())