gpt4 book ai didi

java - 转换为流

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:05:43 34 4
gpt4 key购买 nike

我想将以下从外循环中断的代码转换为 Java 8 Stream

private CPBTuple getTuple(Collection<ConsignmentAlert>  alertsOnCpdDay)
{
CPBTuple cpbTuple=null;

OUTER:
for (ConsignmentAlert consignmentAlert : alertsOnCpdDay) {
List<AlertAction> alertActions = consignmentAlert.getAlertActions();
for (AlertAction alertAction : alertActions) {
cpbTuple = handleAlertAction(reportDTO, consignmentId, alertAction);
if (cpbTuple.isPresent()) {
break OUTER;
}
}
}
return cpbTuple;
}

最佳答案

这里的每个答案都使用 flatMap,直到 java-10 is not lazy .在你的情况下,这意味着 alertActions 被完全遍历,而在 for 循环示例中 - 不是。这是一个简化的示例:

static class User {
private final List<String> nickNames;

public User(List<String> nickNames) {
this.nickNames = nickNames;
}

public List<String> getNickNames() {
return nickNames;
}
}

还有一些用法:

public static void main(String[] args) {
Arrays.asList(new User(Arrays.asList("one", "uno")))
.stream()
.flatMap(x -> x.getNickNames().stream())
.peek(System.out::println)
.filter(x -> x.equalsIgnoreCase("one"))
.findFirst()
.get();
}

java-8 中,这将打印 both oneuno,因为 flatMap 并不懒惰。

另一方面,在 java-10 中,这将打印 one - 如果您想将示例翻译成 stream,这就是您关心的-based 1 to 1.

关于java - 转换为流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50736687/

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