gpt4 book ai didi

java - Java中ArrayList通过分组转Stream

转载 作者:行者123 更新时间:2023-12-01 19:43:43 26 4
gpt4 key购买 nike

我想通过 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);
}
}
}

最佳答案

不要将其转换为流。

这里没有发生一个纯操作。有好几个。

值得注意的是初始操作:

if(getNewPendingMatches.size() > 0) 

在第一次迭代中这总是错误的,并且您总是要添加一个元素。

在随后的迭代中,生活会变得奇怪,因为现在您在迭代元素时尝试删除它们。流在迭代自身时不能删除自身的值;它只在一个方向上进行处理。

正如所写,这段代码不应转换为流。这样做不会获得任何好处,而且会严重损害可读性。

关于java - Java中ArrayList通过分组转Stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54369831/

26 4 0