【发布时间】:2019-01-25 17:07:02
【问题描述】:
我想通过 Id 获得最高分组。如果两个最高分相同,那么我想根据最低可选 ID 获得最高分。我想在 Java Stream 中获得它。到目前为止,此代码有效.有什么有效的方法可以在java流中重写这段代码
例子:
records=record.Person(batchNumber);
List<Person> highestRecords = new ArrayList<>();for(
Person s:records)
{
if(!highestRecords.isEmpty()) {
boolean contains = false;
for(Person ns: new ArrayList<>(highestRecords)) {
if(s.Id().compareTo(ns.Id()) == 0) {
contains = true;
if(s.getScore.compareTo(ns.getScore()) > 0
&& s.optionalId().compareTo(ns.optionalId()) < 0) {
highestRecords.remove(ns);
highestRecords.add(s)
}
}
}
if(contains == false) {
highestRecords.add(s);
}
}else {
highestRecords.add(s);
}
}
}
【问题讨论】:
-
好的,我们看到你有用于每个循环的代码,你为什么不解释一些输入和输出示例
-
变量名真的很混乱,为什么
List<Person>叫getNewPendingMatches?也许第一步应该是在考虑转换为 FP 之前清理现有的解决方案。 -
您知道,我确实看到了您对问题所做的修改。如果您希望这可能会诱使某人将其写成流,那是……不太可能。
-
谢谢,我以为我的问题不清楚,所以我做了一些更改
-
离题,但我强烈建议您查看变量的命名实践,因为这段代码很难阅读。不要将变量命名为
getX,因为这个名称暗示了一个将返回类成员的方法,因此阅读它会让人感到困惑。此外,更好地将名称分开,具有几乎相同名称的变量也会使代码更难理解。
标签: java