Я изучаю Groovy, и я пытаюсь написать альтернативу следующему бит кода Java.Groovy filtering array с методом findAll
Collection<Record> records = requestHelper.getUnmatchedRecords();
Collection<Integer> recordIdentifiers = new ArrayList<>();
for (Record record : records){
int rowId = record.getValue("RowID");
if (rowId >= min && rowId <= max) {
recordIdentifiers.add(rowId);
}
}
Когда этот бит кода запускается, идентификаторы записи должны содержать 50 элементов. До сих пор это мой эквивалент Groovy.
def records = requestHelper.getUnmatchedRecords()
def recordIdentifiers = records.findAll{record ->
int rowId = record.getValue("RowId")
rowId >= min && rowId <= max
}
По какой-то причине массив содержит 100 элементов после выполнения кода Groovy. Все примеры findAll(), с которыми я столкнулся, делают простые сравнения, когда массив построен изначально в Groovy, но как вы фильтруете коллекцию, которую вы получаете из класса Java?
Что такое 100 и 50 здесь? сколько их в «записях»? фильтр просто не работает или есть дубликаты в 'recordIdentifiers'? На первый взгляд код выглядит нормально. – cfrick
Как я узнал позже, мой код был в порядке, но один из наших младших разработчиков создал неправильный набор данных для меня, чтобы работать с ним - у него были дубликаты, поэтому вместо 50 записей у меня было 100. Теперь его пристыдили. – user283188