Условие подсчета в коллекции - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь найти и показать несколько данных из списка (используя groovy), но отображаемый элемент зависит от количества найденных случаев.

Я пробовал что-то подобное (код ниже) Я пробовал и другие способы найти размер коллекции с помощью size(), length(), но ничего не работает.

list[list.findIndexValues { it == 'PA1-03-22'}.collect { it.count == 1 ? it+2 : it+1}]

Rigth теперь явсегда получаю сообщение об ошибке (Нет метода подписи ...), но, конечно, цель состоит в том, чтобы получить правильный элемент на основе количества вхождений.

1 Ответ

0 голосов
/ 07 июля 2019

Из ваших комментариев я понял, что вы хотите добиться этого:

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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...