java - 如何遍历每一行,计算差异然后对所有内容进行平均?

标签 java spring spring-boot

我有一个名为 Client 的模型,其中包含以下信息:

private Long int;
@OneToMany(mappedBy = "client", cascade = CascadeType.ALL)        
private List<Results> results;

模型结果有这些信息:

@ManyToOne
@JoinColumn(name='client_id') 
private Client client;
@OneToOne
private Scores score;
private Date submittedDate;

我想要实现的是:

对于每个用户得到他们第一个结果的分数和最后一个结果的分数,找出差异。 然后平均出每个人的差异。 我该如何编写计算它的函数?

Client返回所有结果的列表,然后for 区别:结果[最后] - 结果[0] 然后是一个循环:

for (int i=0; i <= client.count(); i++)
    difference = results[last] - results[0];
    sum += difference;
    average = sum/client.count();`

我很难将其转换为在 Spring 中运行的代码。 我是否将其写在 ClientServiceImplementation 中,然后在 ClientRepository 中进行查询? 任何帮助表示赞赏!!!

Score 类有:

  private Long id;
  private Double score;

最佳答案

你可以这样做:

List<Client> clients = clientRepository.findAll();

Double meanDiff = clients.stream()
    .map(client -> {
        List<Result> results = client.getResults();
        if (results.size() >= 2) {
            Score first = results.get(0);
            Score last = results.get(results.size() - 1);
            return last.value - first.value;
        } else {
           return 0.0;
        }
    })
    .collect(Collectors.averagingDouble(it -> it));

注意:您没有指定 Score 是什么类,所以我假设它有一个 value类型字段 Double .

更新:这是另一个示例,但忽略了 numberOfResults < 2 的客户端:

Double meanDiff = clients.stream()
    .map(client -> client.getResults())
    .filter(results -> results.size() >= 2) // <-- keep these only
    .map(results -> {
        Score first = results.get(0);
        Score last = results.get(results.size() - 1);
        return last.value - first.value;
    })
    .collect(Collectors.averagingDouble(it -> it));

关于java - 如何遍历每一行,计算差异然后对所有内容进行平均?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47365852/

相关文章:

spring - hibernate 中带有 onetomany 注释的 org.hibernate.exception.ConstraintViolationException

java - 使用 javafx 中的单选按钮打开/关闭 slider

java - 在单元测试期间重置类静态变量

java - 注册为 Spring bean 时过滤器调用两次

spring - grails 3 spring安全启动启动程序登录页面自定义

java - Spring Boot 和 Hibernate 5 的类加载错误

java - spring webflux CORS header 被删除

Java .Class 文件更改字符串

java - 使用 Java 配置在 Spring 中重定向 404 错误

java - 无法确定 : java. util.List 的类型,位于表 : file_post, 的列 : [org. hibernate.mapping.Column(file)]