Java8:流合并两个列表

时间:2020-02-17 19:32:48

标签: java java-8 java-stream

我有两个列表

List1 - (1, 2, 3)
List2 - (4, 5, 6,7, 8)

想使用Java流将两个列表合并为(1, 4, 2, 5, 3, 6, 7, 8)

List1,List2的第一个元素,以及list1,list2的第二个元素……依此类推。如果还有多余的元素,则放在最后。

3 个答案:

答案 0 :(得分:3)

Stream.concat(list1.stream(), list2.stream())
   .collect(Collectors.toList())

答案 1 :(得分:0)

其他答案具有有效解决方案的链接,但这是另一种方法:

    List<Integer> l1 = Arrays.asList(1, 2, 3);
    List<Integer> l2 = Arrays.asList(4, 5, 6, 7, 8);

    List<Integer> combined = IntStream.range(0, Math.max(l1.size(), l2.size()))
            .boxed()
            .flatMap(i -> {
                if (i < Math.min(l1.size(), l2.size()))
                    return Stream.of(l1.get(i), l2.get(i));
                else if (i < l1.size())
                    return Stream.of(l1.get(i));
                return Stream.of(l2.get(i));
            })
            .collect(Collectors.toList());

    System.out.println(combined);

答案 2 :(得分:-1)

使用Java流可以轻松实现。 List1.stream()。collect(Collectors.toList())。addAll(List2);