gpt4 book ai didi

list - 如何使用lambda,Java在列表迭代结束时返回值

转载 作者:行者123 更新时间:2023-12-05 01:31:41 25 4
gpt4 key购买 nike

尝试遍历对象列表以从迭代中获取最后一个参数的值。

long lastSeen = 0L;
for(Object o : list) {
lastSeen = o.getLastSeenId();
}
// will make use of the lastSeen.

我不能对 lambda 做同样的事情,

long lastSeen = 0L;
list.stream().forEach(o-> {
lastSeen = o.getLastSeenId();
});

因为我将以这个编译时间结束。

Local variable lastSeenId defined in an enclosing scope must be final or effectively final

我可以这样做来阅读最大的内容,但不想:

Set<Long> set = new HashSet<>();
list.stream().forEach(o-> {
set.add(mergeUser.getLastSeenId());
});

有没有更好的方法?这样做的原因是监视最后一次看到的值循环处理(如果发生异常则终止)。

最佳答案

我看不出有任何理由需要迭代整个源代码来检索最后一个 ID。这可以在没有迭代的情况下完成:

long lastSeen = list.size() > 0? list.get(list.size()-1).getLastSeenId() : 0L;

但是,如果您计划在每次迭代中做一些其他事情,而不仅仅是上述内容,那么我会坚持使用您当前的命令式方法。尝试在此处使用流并不合适,并且不会给您带来任何好处。

关于list - 如何使用lambda,Java在列表迭代结束时返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50811648/

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