我有以下片段,我想知道是否可以用Java-Streams/Java8 API替换它,以及如何替换它
List<Borrower> borrowers = creditcomplex.getBorrowers();
for (Borrower borrower : borrowers) {
List<Facility> facilities = borrower.getFaciliies();
for (Facility facility : facilities) {
List<RepaymentSchedule> repaymentScheduleList = facility.getrepaymentSchedule();
if (repaymentScheduleList != null) {
for (RepaymentSchedule repaymentschedule : repaymentScheduleList) {
double[] repayment =
amortizationService.calculateAmortizationSchedule(repaymentschedule);
double[] drawdown =
amortizationService.calculateRepaymentSchedule(repaymentschedule);
double[] outstandingProfie = amortizationService
.calculateOutstandingSchedule(repaymentschedule);
}
}
}
}
您可以使用flatmap
:
creditcomplex.getBorrowers().stream()
.flatMap(b -> b.getFaciliies().stream())
.flatMap(f -> Optional.ofNullable(f.getrepaymentSchedule()).stream())
.forEach(repaymentschedule -> {
double[] repayment =
amortizationService.calculateAmortizationSchedule(repaymentschedule);
double[] drawdown =
amortizationService.calculateRepaymentSchedule(repaymentschedule);
double[] outstandingProfie = amortizationService
.calculateOutstandingSchedule(repaymentschedule);
});
P.S.1:注意,optional#stream
出现在java 9中,您可能需要使用:
optional.map(Stream::of).orElseGet(Stream::empty)
是从这里取的。
问题内容: 以下代码有效,但显示为冗长。 我的意图是通过itertools.product降低LOC。这是我想出的。 是否有其他方法可以使用itertools.product,以便有足够的值可解包? 问题答案: 您需要分别将迭代器的元素传递给: 顺便说一句,通过另一个调用,您可以保存另一行,跳过Python生成器的开销,并在C中完成所有工作:
在学习Java 8 streams和lambas时,我尝试用streams替换以下嵌套for循环: 循环迭代“ProvidedService”对象的列表,对于每个对象,循环遍历“Desk”对象的列表属性,并将“Id”字段提取到列表中。 我使用streams生成了以下代码: 这是正确/最佳的方法吗?或者有没有一种方法可以在没有第二个嵌套流的情况下实现这一点?
和其他编程语言一样, Java 允许循环嵌套。如果把一个循环放在另一个循环体内,那么就可以形成嵌套循环。 嵌套循环既可以是 for循环嵌套 while 循环,也可以是 while 循环嵌套 do-while 循环 …… 即各种类型的循环都可以作为外层循环,也可以作为内层循环。 当程序遇到嵌套循环时,如果外层循环的循环条件允许,则开始执行外层循环的循环体,而内层循环将被外层循环的循环体来执行——只是
我对确定上述代码的BigO有点困惑。如果在最外层的循环中,则为(int x=1;x 然而,考虑到最外层循环迭代n 2次,这会改变bigO还是加法常数无关紧要的规则?最后,如果最内层循环迭代n 2次而不是n,会改变什么吗? 非常感谢。
我有一个嵌套的for循环,但是它会减慢一点处理速度,我如何才能使嵌套循环高效。我需要的是对于外循环的每个值,内循环继续其所有迭代。但是,我不认为它会像两个嵌套循环那样影响计算。我的第二个问题是,循环会影响速度还是会支持我的现象? 我的代码:
我正在寻找一种用函数式编程方法替换嵌套foreach循环的方法。情况是这样的: 目前我的代码是这样的: 这将生成如下所示的输出: 有谁知道如何用函数式编程替代方案替换foreach代码块?