说我有两个大小相等的列表,分别为[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
只能使用流中的信息,但是我需要两个列表才能使函数正常工作。
答案 0 :(得分:1)
您可以转置两个列表(这将为您提供一个元组列表,然后使用collectEntries()
从中创建映射(正是这样)。
def l1 = [1,2,3]
def l2 = ["a","b","c"]
assert [(1): "a", (2): "b", (3): "c"] == [l1,l2].transpose().collectEntries()