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

在Groovy中将元素添加到列表中会创建列表列表,groovy,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,

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

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]

如何避免这种情况并获得如上所示的列表?

如何

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

当您执行
List2.add(it.split(“!”)
时,您将列表添加到
List2
,而不是单个字符串,因为
.split()
从字符串创建列表

您应该首先使用
.split()
创建列表,然后将列表的每个成员添加到
列表2

以下是解决方案:

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)​
split()
返回一个列表。这就是为什么我得到了一份名单。我发现
split()。
下面返回所需的输出

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