List 如何在Groovy中合并两个列表的索引?

List 如何在Groovy中合并两个列表的索引?,list,groovy,List,Groovy,我有两个列表需要合并到新列表中,但新列表需要包含原始列表的合并索引。例如: List1 = [1, 2, 3] List2 = [a, b, c] 我需要输出为: finalList = [1a, 2b, 3c] 我需要能够在groovy中实现这一点。非常感谢您提供的任何帮助。在Groovy 2.4+中,假设两个列表的大小相同 list1 = [1, 2, 3] list2 = ['a', 'b', 'c'] assert ['1a', '2b', '3c'] == list1.withI

我有两个列表需要合并到新列表中,但新列表需要包含原始列表的合并索引。例如:

List1 = [1, 2, 3]
List2 = [a, b, c]
我需要输出为:

finalList = [1a, 2b, 3c]

我需要能够在groovy中实现这一点。非常感谢您提供的任何帮助。

在Groovy 2.4+中,假设两个列表的大小相同

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']

assert ['1a', '2b', '3c'] == list1.withIndex().collect { it, index -> it + list2[index] }
或者,在Groovy 1.5+中更简单一点

assert ['1a', '2b', '3c'] == [list1, list2].transpose()*.sum()

以下内容与doelleri的解决方案非常接近:

在Groovy2.4中+

println ([list1, list2].transpose().collect{it -> it[0] + it[1]})
输出

[1a, 2b, 3c]

这让我非常接近。当我在代码中使用它时,我得到如下结果:[[1,a],[2,b],[3,c]]也许我的原始列表设置不正确?谢谢你的帮助。不完全确定你是如何得到的-试试我在中编辑的另一种方法,结果与第一个选项相同。我试着让这变得简单,所以我省略了我的设置。我使用XMLslurper从XML模式中获取值,然后使用.list()方法将其放入列表中。我这样做是为了创建两个列表。我现在需要合并它们。我不确定这种设置是否妨碍了您提供的解决方案的工作。通过使用新的groovy脚本,并在代码中复制,它与您提供的示例完美结合。这意味着我在原始列表中的设置有问题。不喜欢最后的
sum()
,这很聪明,也很简洁,但是如果两个输入列表都包含整数,它会产生不想要的结果谢谢!那也行!作为补充,我解决了我的问题。两种解决方案都有效的唯一方法是首先创建一个数组。在groovy中,可以有一个列表和一个数组。作为一个列表,这是行不通的。一旦我把它转换成一个数组,两种解决方案都能完美地工作。我不得不使用它将列表转换为数组:.text()作为字符串[]谢谢您的帮助!你能解释一下代码的后半部分吗:{it->it[0]+it[1]}“->”是什么意思?@GrantEdwards这是一个lambda表达式,
it
是参数(表示我们将迭代的列表中的每一项),因此对于每个看起来像
it=[1,a]
我们将返回:
it[0]+it[1]
,这将导致示例中
1
'a'
=>
1a
的字符串串联。