我正在努力理解如何使以下代码正常工作.

我的stat class的字段count_human_dnaBigDecimal类型的,只要这样就可以设置类型,但我需要将其更改为BigDecimal,可以告诉我如何使BigDecimal字段工作吗?

stat.setCount_human_dna(dnaSamples.stream()
    .filter(x -> x.getType().equals("Human"))
    .collect(Collectors.counting()));

这个密码正在计算所有属于人类的dnaSamples个类型.

推荐答案

最简单有效的方法是使用终端操作count(),它将流中的元素数返回为long,然后转换为BigDecimal:

stat.setCount_human_dna(getDNACount(dnaSamples));
public static BigDecimal getDNACount(Collection<Sample> dnaSamples) {
    long humanSamples = dnaSamples.stream()
        .filter(x -> x.getType().equals("Human"))
        .count();

    return BigDecimal.valueOf(humanSamples);
}

您可以使用reduce() a终端操作直接从流生成BigDecimal类型的结果:

stat.setCount_human_dna(getDNACount(dnaSamples));
public static BigDecimal getDNACount(Collection<Sample> dnaSamples) {
    return dnaSamples.stream()
        .filter(x -> x.getType().equals("Human"))
        .reduce(BigDecimal.ZERO,
                (total, next) -> total.add(BigDecimal.ONE),
                BigDecimal::add);
}

Sidenote:我不是DNA分析等问题的专家,但这种减少的结果总是一个整数.您可以考虑使用BigInteger而不是BigDecimal.

Java相关问答推荐

如何在Docker容器中使用wireock—Webhooks阻止请求?

Oracle DUAL表上使用DDL时jOOQ问题的解析'

如何转换Tue Feb 27 2024 16:35:30 GMT +0800 String至ZonedDateTime类型""

neo4j java驱动程序是否会在错误发生时自动回滚事务?

需要一个找不到的jakarta.sistence.EntityManager类型的Bean

对运行在GraalVM-21上的JavaFX应用程序使用分代ZGC会警告不支持JVMCI,为什么?

在bash中将数组作为Java程序的参数传递

尽管通过中断请求线程死亡,但线程仍将继续存在

如何集成语义发布和BitBucket(Java项目)

在Frege中,我如何将一个字符串安全地转换为一个可能的Int?

没有使用Lombok生成的参数

在settings.gradle.kts和Build.gradle.kts中使用公共变量

Java组件项目中的JavaFX对话框国际化

如何生成指定范围内的11位序列号?

在使用具有不同成本的谓词调用allMatch之前对Java流进行排序会带来什么好处吗?

对角线填充二维数组

如何通过Java java.lang.Foreign API访问本机字节数组

在Java中将对象&转换为&q;HashMap(&Q)

JavaFX复杂项目体系 struct

Spring Boot Security-每个端点都被403禁止,Spring记录一个BasicErrorController#错误(HttpServlet请求)