用stream流筛选出一个list<Integer>中的所有质数
时间: 2024-02-21 13:00:29 浏览: 21
可以使用Java 8的stream流和lambda表达式来实现对list<Integer>中的所有质数的筛选。
以下是一个示例代码:
```java
List<Integer> numList = Arrays.asList(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
List<Integer> primeList = numList.stream()
.filter(num -> {
if (num < 2) {
return false;
}
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
})
.collect(Collectors.toList());
System.out.println(primeList);
```
在上面的代码中,首先定义了一个包含多个数字的List<Integer>。然后使用stream()方法将其转换为Stream<Integer>,接着使用filter()方法筛选质数,最后使用collect()方法将结果收集到一个新的List<Integer>中。
在filter()方法中,使用lambda表达式来判断每个数字是否为质数。如果数字小于2,则返回false;否则,使用for循环判断其是否能被2到其平方根之间的任意一个数字整除。如果能被整除,则返回false;否则,返回true。
运行以上代码,输出结果为:
```
[2, 3, 5, 7, 11, 13]
```
即为原List<Integer>中的所有质数。
阅读全文