Java中的流式操作(Stream API)和函数式编程(Functional Programming)提供了一种简洁、灵活、可读性强的方式来处理集合数据。下面是流式操作和函数式编程的一些常见用法:
过滤数据:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0) // 筛选出偶数
.collect(Collectors.toList());
映射数据:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> squares = numbers.stream()
.map(n -> n * n) // 将每个数平方
.collect(Collectors.toList());
归约操作:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
.reduce(0, (a, b) -> a + b); // 将所有数求和
排序数据:
List<Integer> numbers = Arrays.asList(3, 1, 4, 2, 5);
List<Integer> sortedNumbers = numbers.stream()
.sorted() // 对数字进行升序排序
.collect(Collectors.toList());
查找元素:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Optional<Integer> firstEvenNumber = numbers.stream()
.filter(n -> n % 2 == 0) // 筛选偶数
.findFirst(); // 查找第一个符合条件的元素,返回Optional对象
统计数据:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
long count = numbers.stream()
.count(); // 统计列表中元素的个数
并行流操作:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.parallelStream()
.filter(n -> n % 2 == 0) // 并行筛选偶数
.collect(Collectors.toList());
这些只是流式操作和函数式编程的一些常见用法,Stream API还提供了更多的操作方法,例如映射至其他数据类型、分组、分片等。
通过使用流式操作和函数式编程,可以编写出更加简洁、可读性强的代码,可以减少中间变量的使用和临时集合的创建,提高代码的维护性和可读性。同时,流式操作还能够发挥并行处理的能力,提高程序的执行效率。