Добавление элементов в список Создает список в Groovy - PullRequest
2 голосов
/ 30 апреля 2019

Я разбираю каждый элемент списка один за другим.

def List1 = (String[]) Data[2].split(',')

Часть этого списка дает мне список с элементами, которые содержат разделитель !.

List1 = [TEST1!01.01.01, TEST2!02.02.02]

Я попытался перебрать каждый элемент этого списка и получить список через запятую.

          def List2 = []
          List1.each { List2.add(it.split('!'))}

Однако, результатом был список списка.

[[TEST1, 01.01.01], [TEST2, 02.02.02]]

Вместо [TEST1, 01.01.01, TEST2, 02.02.02].

Как мне избежать этого и получить список, как показано выше?

Ответы [ 3 ]

2 голосов
/ 30 апреля 2019

Как насчет этого?

def list1 = ['TEST1!01.01.01', 'TEST2!02.02.02']
println list1.collect{it.split('!')}.flatten()
1 голос
/ 30 апреля 2019

Когда вы делаете List2.add(it.split('!')), вы добавляете список в List2 вместо одной строки, потому что .split() создает список из строки.

Сначала вы должны создать список, используя .split(), а затемдобавьте каждого члена списка в List2.

Вот решение:

def List1 = ["TEST1!01.01.01", "TEST2!02.02.02"]

​def List2 = []          

List1.each { List1member ->
    def subList = List1member.split('!')
    subList.each { subListMember ->
        List2.add(subListMember)
    } 
}

println(List2)​
0 голосов
/ 04 мая 2019

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

def List1 = (String[]) Data[2].split(',|!')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...