如何用Java 8实现偶数乘5、奇数保留的列表转换需求?
解决Java 8 Stream处理奇偶元素的问题
你的代码问题出在使用了filter操作——这个操作会直接剔除所有不满足条件(这里是奇数)的元素,所以最终结果里只剩下处理后的偶数,丢失了原有的奇数。
要实现“偶数乘5,奇数保持不变”的需求,不需要过滤元素,而是要在map操作里对每个元素做条件判断:
Stream<Integer> intStream = Stream.of(1, 2, 3, 4, 5); List<Integer> resStream = intStream .map(i -> i % 2 == 0 ? i * 5 : i) // 偶数乘5,奇数返回原数 .collect(Collectors.toList()); resStream.forEach(System.out::println);
运行这段代码后,输出结果就是:
1 10 3 20 5
完全符合你期望的输出。
本质上就是把原本的filter+map合并成一个带条件判断的map操作,这样所有元素都会被保留并按规则处理。
内容的提问来源于stack exchange,提问作者Lova Chittumuri
相关产品推荐
相关产品推荐

