我有两个列表
List1 - (1, 2, 3)
List2 - (4, 5, 6,7, 8)
想使用Java流将两个列表合并为(1, 4, 2, 5, 3, 6, 7, 8)
List1,List2的第一个元素,以及list1,list2的第二个元素……依此类推。如果还有多余的元素,则放在最后。
答案 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);