【问题标题】:get prime numbers from List using java stream使用java流从List中获取素数
【发布时间】:2021-11-01 17:48:26
【问题描述】:

如问题标题中所述 我写了这样的方法。我不知道如何过滤以从列表中获取素数。 编辑:我想知道是否可以只使用一个长返回和流来检查 edit2:知道我知道我不能

   public static List<Integer> primeNumbers(List <Integer> list) {
       return Optional.ofNullable(list)
                .orElse(Collections.emptyList())
                .stream()
                .filter(Objects::nonNull)
                .filter(i -> i %2 ==0)
                .toList();
    }

如有错误,请先在此发帖

【问题讨论】:

  • 好吧,你可能会先写一个函数来检查一个数是否是素数。
  • 您所做的只是过滤掉null 和奇数。您需要自己编写一个方法来检查数字是否为素数。
  • 我想知道是否可以仅使用一个长返回和流进行检查
  • 是的,但您仍然需要 一些 逻辑来确定一个数字是否为素数。但老实说,您为什么要在单个流操作中执行此操作?

标签: java list stream


【解决方案1】:

你可以使用(或误用)BigInteger.isProbablePrime:

import java.math.BigInteger;
....

public static List<Integer> primeNumbers(List <Integer> list) {
    return list.stream()
               .filter(i -> BigInteger.valueOf(i).isProbablePrime(10))
               .collect(Collectors.toList());
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 2021-12-01
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多