java – 如何遍历每一行,计算差异然后平均一切?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何遍历每一行,计算差异然后平均一切?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1604字,纯文字阅读大概需要3分钟。
内容图文
我有一个名为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;
我想要实现的是:
为每个用户获得他们的第一个结果的分数和他们的最后结果的分数,找到差异.
然后平均每个人的差异.
如何编写计算它的函数?
客户端返回所有结果的列表,然后返回
差异:结果[最后] – 结果[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类,所以我假设它有一个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 – 如何遍历每一行,计算差异然后平均一切?全部内容,希望文章能够帮你解决java – 如何遍历每一行,计算差异然后平均一切?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。