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



假设我有两个大小相等的列表[1, 2, 3, 4, ...] 和 [a, b, c, d, ...]。有没有办法在不使用lambda函数或嵌套函数的情况下制作一个包含流的映射,该流将1映射到a,2映射到b,3映射到c等?

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

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

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

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

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

最新更新