gpt4 book ai didi

Java 8 Stream : Iterating,处理和计数

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:42:24 26 4
gpt4 key购买 nike

这样处理和统计处理后的数据可以吗?

long count = userDao.findApprovedWithoutData().parallelStream().filter(u -> {
Data d = dataDao.findInfoByEmail(u.getEmail());
boolean ret = false;
if (d != null) {
String result = "";
result += getFieldValue(d::getName, ". \n");
result += getFieldValue(d::getOrganization, ". \n");
result += getFieldValue(d::getAddress, ". \n");
if(!result.isEmpty()) {
u.setData(d.getInfo());
userDao.update(u);
ret = true;
}
}
return ret;
}).count();

因此,简而言之:迭代不完整的记录,如果存在数据则更新并计算记录的数量?

最佳答案

恕我直言,这是错误的代码,因为:

过滤谓词有(非常显着的)副作用

谓词不应该有副作用(就像 getter 不应该有)。这是出乎意料的,这让它变得很糟糕。

过滤谓词效率很低

谓词的每次执行都会触发大量查询,这使得此代码不可扩展。

乍一看,主要目的似乎是获取计数,但实际上那只是一个次要(可有可无)的信息

好的代码使正在发生的事情一目了然(不像这段代码)

您应该更改代码以使用(相当简单的)单一更新查询(采用连接)并从持久性 API 结果中的“更新的行数”信息中获取计数。

关于Java 8 Stream : Iterating,处理和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33943827/

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