gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 03:32:12 26 4
gpt4 key购买 nike

我有一个名为 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com