Java Stream API 中使用 orElseGet() 设置默认值
在使用 Java Stream API 的 findAny() 方法时,如果找不到匹配的元素,可以使用 orElse() 方法设置默认值。但是,当需要修改当前对象的值并将其作为默认值返回时,可以使用 orElseGet() 方法。
以下代码示例展示了如何使用 orElseGet() 方法将当前对象 rate 的 countTask 值改为 "0":
List<TaskVillageNameCountBO> collect1 = rank4CompleteRate.stream().map(rate ->
rank4CompleteCount.stream().filter(count -> Objects.equals(rate.getKey(), count.getKey()))
.findAny()
.map(count -> {
double countTask1 = Double.parseDouble(count.getCountTask());
double countTask2 = Double.parseDouble(rate.getCountTask());
String percentage = percentage(countTask1, countTask2);
String key = count.getKey();
System.out.println('key = ' + key);
System.out.println('countTask1 = ' + countTask1);
System.out.println('rateTask2 = ' + countTask2);
System.out.println('percentage = ' + percentage);
rate.setCountTask(percentage);
return rate;
}).orElseGet(() -> {
rate.setCountTask('0');
return rate;
})
).sorted(Comparator.comparing(TaskVillageNameCountBO::getCountTask).reversed()).collect(Collectors.toList());
在这个代码示例中,如果 findAny() 方法找不到匹配的元素,就会执行 orElseGet() 方法,并将当前对象 rate 的 countTask 值改为 "0"。
使用 orElseGet() 方法可以有效地处理找不到匹配元素的情况,并将修改后的对象作为默认值返回。
原文地址: https://www.cveoy.top/t/topic/n8De 著作权归作者所有。请勿转载和采集!