使用collect合并两个列表

问题描述 投票:0回答:1

我有 2 个清单。

List<String> names = Arrays.asList("A","B",C","D");
List<String> wife = Arrays.asList("E","F","G);

我使用了reduce()将其合并到一个列表中。

Stream.of(names, wife)
                .reduce(new ArrayList<String>(), (list, val) -> {
                    list.addAll(val);
                    return list;
                }, 
               (list1, list2) -> {list1.addAll(list2); return list1; }));

如何使用

执行相同的操作
collect 

方法。我不想使用 Collectors.java 类中的函数。可以做到吗?

我试过这个

List.of(names, wife).stream()
                .collect(new ArrayList<List<String>>(), (l1, l2) -> l1.addAll(l2));

但是,我看到l2是List类型,而不是l1类型。 l1是什么?我想了解收集方法的工作原理。请帮忙!

java java-stream reduce
1个回答
0
投票

如果我了解您的目标,您可以简单地使用:

List<String> result = Stream.concat(names.stream(), wife.stream()).toList();

或者:

List<String> result = new ArrayList<>(names);
result.addAll(wife);
© www.soinside.com 2019 - 2024. All rights reserved.