java 将一个list集合数据存放到两个set集合中 list有数据为null停止循环
时间: 2024-02-10 11:10:30 浏览: 77
假设需要将一个List集合中的数据存放到两个Set集合中,同时需要在List中遇到`null`元素时停止循环,可以使用Java 8中的Stream API和Lambda表达式来实现。下面是一个例子:
```java
List<Integer> list = Arrays.asList(1, 2, 3, null, 4, 5, 6);
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
list.stream().takeWhile(Objects::nonNull).forEach(i -> {
if (i % 2 == 0) {
set1.add(i);
} else {
set2.add(i);
}
});
System.out.println("set1: " + set1); // 输出: set1: [2]
System.out.println("set2: " + set2); // 输出: set2: [1, 3, 5]
```
这段代码中,通过`list.stream()`将List集合转换为一个Stream流,然后使用`takeWhile()`方法获取Stream中的元素,当遇到`null`元素时停止循环。在Lambda表达式中,判断元素的奇偶性,将偶数放到`set1`中,将奇数放到`set2`中。最后输出两个Set集合中的元素。需要注意的是,由于使用了`takeWhile()`方法,`set1`中只包含了第一个偶数元素2,后面的偶数元素4和6并没有被添加到`set1`中。
阅读全文