gpt4 book ai didi

java - 使用流和 map 时继续不起作用

转载 作者:行者123 更新时间:2023-12-02 11:20:27 25 4
gpt4 key购买 nike

我有这个简单的代码,其中使用流和 .map() 函数。我对 id 进行空检查,并在其中添加 继续continue 给我一个错误:在循环外继续当我删除 continue 时,我没有收到错误,但我不知道行为是否相同?

public List<Long> getIds(final Long[][] value){
List<Long> list = Arrays.stream(value).map(result ->{
final Long id = result[1];
if(id == null){
continue; // This part doesn't work (error: Continue outside of loop)
}
return id;
}).collect(Collectors.toList());
}

关于为什么 .streams 会发生这种情况有什么建议吗?然而,当我不使用流时,我可以使用继续

该问题已被标记为重复,但事实并非如此。使用 returnforEach 中肯定有效,其中没有请求返回类型,但在 map 中则不行。

最佳答案

continue 在 for 循环中工作。您可以使用 flatMap 作为解决方法:

 List<Long> list = Arrays.stream(value).flatMap(result ->{
final Long id = result[1];
return Stream.ofNullable(id);
}).collect(Collectors.toList());

您还可以按照 @Naman 的建议直接使用 Stream.ofNullable 使其更加简洁:

 List<Long> list = Arrays.stream(value)
.flatMap(result -> Stream.ofNullable(result[1]))
.collect(Collectors.toList());

我首先由@Holger 提出的方法的另一个更优雅的版本是在过滤器 中使用谓词:

 List<Long> list = Arrays.stream(value)
.map(result -> result[1])
.filter(Objects::nonNull)
.collect(Collectors.toList());

关于java - 使用流和 map 时继续不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60099555/

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