Хорошо, я уверен, что здесь что-то не так.Метод Groovy Array.addAll удаляет элементы из исходного массива
result = []
for (aMp in arMap) {
println("0 " + result)
println("1 " + aMp)
println("2 " + delegate.findSingleMap(aMp))
result.addAll(delegate.findSingleMap(aMp))
println "3 " + result
}
return result
Println результат является следующим: (У меня есть 2 элемента в arMap, так что печатать эти четыре значения 2 раза)
0 []
1 [ID:XXX, Type:4]
2 [[First:21/Nov/2013, Type:4, error code:SXR07, ID:XXX, Test ID:5]]
3 [[First:21/Nov/2013, Type:4, error code:SXR07, ID:XXX, Test ID:5]]
0 [[First:21/Nov/2013, Type:4, error code:SXR07, ID:XXX, Test ID:5]]
1 [ID:YYY, Type:4]
2 [[First:12/Oct/2012, Type:4, error code:SXR07, ID:YYY, Test ID:6]]
3 [[First:12/Oct/2012, Type:4, error code:SXR07, ID:YYY, Test ID:6]]
Как вы можете видеть функцию findSingleMap работать должным образом, но второй раз я использую AddAll, мой массив результатов потеряет значение XXX.
Что я делаю неправильно?
Вы публикуете не все, что вы вводите. Откуда начинается строка, начинающаяся с 0? – talex
@talex только что добавил. Мне было интересно, если результат сброшен до начала следующего цикла, и я добавил печать – SeraphimFoA
, ваш 'findSingleMap' также работает с переменной' result'? Использование упрощенной версии вашего кода отлично подходит для меня (groovy 2.2.1) и 'addAll' работает как рекламируется. – cfrick