将元素追加到列表会在Groovy中创建列表列表

时间:2019-04-30 01:45:53

标签: groovy

我正在逐一解析列表中的每个元素。

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 个答案:

答案 0 :(得分:2)

怎么样?

def list1 = ['TEST1!01.01.01', 'TEST2!02.02.02']
println list1.collect{it.split('!')}.flatten()

答案 1 :(得分:1)

当您执行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)​

答案 2 :(得分:0)

split()返回一个列表。这就是为什么我得到列表列表的原因。我发现split()在与运算符一起应用时也可以处理多个定界符。 以下返回所需的输出。

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