如何使用java lambda表达式迭代两种不同类型的列表来创建列表?

时间:2017-03-07 13:44:20

标签: java lambda

如何使用java 8 lambda表达式更改以下代码。以下是我的代码:

import concurrent.futures

def single(a, b, c=True):
    return (a, b, c)

if __name__ == '__main__':
    iterable_a = range(4)
    iterable_b = range(4,8)
    with concurrent.futures.ProcessPoolExecutor() as executor:
        results = executor.map(single, iterable_a, iterable_b)

在上面的代码中,我使用了for循环来添加来自两个不同列表的元素。我如何使用lamba表达式执行上述相同的步骤?

2 个答案:

答案 0 :(得分:2)

以下代码也是如此:

List<String> result = Stream.concat(
        list1.stream().flatMap(s -> Stream.of(s.getName(), s.getParentName())),
        list2.stream().flatMap(m -> Stream.of(m.getName(), m.getManagerName()))
        )
        .collect(Collectors.toList());

如果您需要确保创建ArrayList,请改用Collectors.toCollection(ArrayList::new)

答案 1 :(得分:1)

我不太确定,但这是你正在寻找的吗?

list1.forEach(s -> {
    result.add(s.getName());
    result.add(s.getParentName());
});
list2.forEach(m -> {
    result.add(m.getName());
    result.add(m.getManagerName());
});