在Groovy中将2个列表与流组合

时间:2019-06-19 18:57:43

标签: groovy functional-programming

说我有两个大小相等的列表,分别为[1、2、3、4,...]和[a,b,c,d,...]。有没有一种方法可以使用流将1映射到a,2映射到b,3映射到c等,而不使用lambda函数或嵌套函数?

我会使用map并传入一个函数,但是这个传入的函数只能接受1个参数,并且我需要两条信息才能将元素相互映射。

IntStream(1, list1.size()).stream().map(this.&combineListsFunction).collect...

combineListsFunction只能使用流中的信息,但是我需要两个列表才能使函数正常工作。

1 个答案:

答案 0 :(得分:1)

您可以转置两个列表(这将为您提供一个元组列表,然后使用collectEntries()从中创建映射(正是这样)。

def l1 = [1,2,3]
def l2 = ["a","b","c"]

assert [(1): "a", (2): "b", (3): "c"] == [l1,l2].transpose().collectEntries()