GROOVY Loop — генерировать список списков

#list #loops #groovy

#Список #циклы #groovy

Вопрос:

Это то, что я пытаюсь сделать.

Внутри цикла я генерирую элементы списка в формате [a, 1]. Первый элемент — это строка, второй — число. Как только у меня будут все списки из цикла, мне нужно поместить это в другой список. пример -> [[a,1],[b,2],[c,3]]

Это мой пример кода, который я пробовал, хотя и только с элементом int. К сожалению, я не могу получить то, что ищу. Должно быть что-то простое, что я упускаю из виду.

 a = [1,2]
b = []
c = []
a.each
{
b.clear()
b.add(it)
println b
c.add(b)
}
println c
  

Генерируемый результат является

 [1]
[2]
[[2], [2]]
  

Я пытаюсь получить

 [1]
[2]
[[1], [2]]
  

Редактировать

После помощи от Александра

 a = [1,2]
c = []
a.each
{
b = []
b.add(it)
c.add(b)
}
println c
  

Ответ №1:

Наткнулся на более простой способ добиться этого. С помощью collate()

 a = [1,2]
a.collate(1)
  

Результат
[[1],[2]]

Ответ №2:

Вы вставляете в c ссылку на один и тот же список дважды. Следовательно, вы получаете то, что вы вкладываете.
Попробуйте заменить b.clear() на b = []
Тогда это будет новый список.

Комментарии:

1. Спасибо. Любые предложения, как я могу получить результат, который я ищу.