在使用 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() 方法可以有效地处理找不到匹配元素的情况,并将修改后的对象作为默认值返回。

Java Stream API 中使用 orElseGet() 设置默认值

原文地址: https://www.cveoy.top/t/topic/n8De 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录