gpt4 book ai didi

java-8 - 如何将 forEach 转换为 lambda

转载 作者:行者123 更新时间:2023-12-01 13:23:50 25 4
gpt4 key购买 nike

Iterator<Rate> rateIt = rates.iterator();
int lastRateOBP = 0;
while (rateIt.hasNext())
{
Rate rate = rateIt.next();
int currentOBP = rate.getPersonCount();
if (currentOBP == lastRateOBP)
{
rateIt.remove();
continue;
}

lastRateOBP = currentOBP;
}

我如何使用上面的代码通过 Java 8 的 stream 转换为 lambda?比如list.stream().filter().....但是我需要操作list。

最佳答案

最简单的解决方案是

Set<Integer> seen = new HashSet<>();
rates.removeIf(rate -> !seen.add(rate.getPersonCount()));

它利用了 Set.add 将返回 false 如果该值已经在 Set 中,即已经遇到的事实。由于这些是您要删除的元素,因此您所要做的就是否定它。

如果为具有相同人数的每个组保留任意 Rate 实例就足够了,则此解决方案不需要排序。

与您最初的基于Iterator 的解决方案一样,它依赖于您的原始Collection 的可变性。

关于java-8 - 如何将 forEach 转换为 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43973596/

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