You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java Stream从整数列表中筛选出质数

质数筛选单Stream实现方案

完全可以仅通过单个return语句结合Stream流完成质数筛选需求,只需要将原有筛选偶数的filter逻辑替换为质数判断规则即可,优化后的代码如下:

import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;

public class PrimeFilter {
    public static List<Integer> primeNumbers(List <Integer> list) {
        return Optional.ofNullable(list)
                .orElse(Collections.emptyList())
                .stream()
                .filter(Objects::nonNull)
                .filter(i -> {
                    // 小于2的数不是质数
                    if (i < 2) return false;
                    // 2是唯一的偶质数
                    if (i == 2) return true;
                    // 大于2的偶数都不是质数
                    if (i % 2 == 0) return false;
                    // 仅判断到平方根范围内的奇数是否能整除当前数
                    for (int j = 3; j * j <= i; j += 2) {
                        if (i % j == 0) return false;
                    }
                    return true;
                })
                .toList();
    }
}

逻辑说明

  • 保留了原有代码的入参空列表容错、空元素过滤逻辑,兼容性不变
  • 质数判断逻辑做了效率优化:提前排除偶数、仅遍历到数值平方根,避免不必要的计算
  • 如果你希望代码更简洁易读,也可以把质数判断逻辑抽成单独的Predicate<Integer>方法,直接在filter中引用方法即可,仍然可以保持单return的写法。

内容的提问来源于stack exchange,提问作者human

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:06:02