Java流式编程是一种基于函数式编程思想的编程方式,它通过将操作封装成数据流的形式来实现对集合、数组等数据结构的高效处理。Java 8引入了Stream API来支持流式编程,使得我们可以更加方便地实现复杂的数据处理逻辑。
以下是常用的Java流式编程相关操作及使用代码:
- filter() 根据指定的条件过滤集合中的元素,只保留符合条件的元素。例如:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream()
.filter(i -> i > 2)
.forEach(System.out::println); //输出: 3, 4, 5
- map() 将集合中的每个元素映射成另一个元素,生成一个新的集合。例如:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream()
.map(i -> i * i)
.forEach(System.out::println); //输出: 1, 4, 9, 16, 25
- flatMap() 将集合中的每个元素转换为一个流,然后将所有流合并成一个流。例如:
List<List<Integer>> list = Arrays.asList(
Arrays.asList(1, 2),
Arrays.asList(3, 4),
Arrays.asList(5, 6)
);
list.stream()
.flatMap(List::stream)
.forEach(System.out::println); //输出: 1, 2, 3, 4, 5, 6
- distinct() 去除集合中的重复元素。例如:
List<Integer> list = Arrays.asList(1, 2, 2, 3, 3, 4, 5, 5);
list.stream()
.distinct()
.forEach(System.out::println); //输出: 1, 2, 3, 4, 5
- sorted() 将集合中的元素排序。例如:
List<Integer> list = Arrays.asList(5, 3, 1, 4, 2);
list.stream()
.sorted()
.forEach(System.out::println); //输出: 1, 2, 3, 4, 5
- limit() 只保留前几个元素,其余元素忽略。例如:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream()
.limit(3)
.forEach(System.out::println); //输出: 1, 2, 3
- skip() 忽略前几个元素,只保留后面的元素。例如:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
list.stream()
.skip(2)
.forEach(System.out::println); //输出: 3, 4, 5
- reduce() 对集合中的所有元素进行聚合操作,生成一个新的值。例如:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
int sum = list.stream()
.reduce(0, Integer::sum);
System.out.println(sum); //输出: 15
- collect() 将流中的元素收集到一个集合中。例如:
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> newList = list.stream()
.filter(i -> i > 2)
.collect(Collectors.toList());
System.out.println(newList); //输出: [3, 4, 5]
- parallelStream() 获取一个并行流,可以提高大数据量处理的效率。例如:
List<Integer> list = IntStream.range(1, 100000).boxed().collect(Collectors.toList());
long count = list.parallelStream()
.filter(i -> i % 2 == 0)
.count();
System.out.println(count); //输出: 49999
总之,Java流式编程提供了一种简单、高效的方式来处理集合、数组等数据结构,它的灵活性和可读性使得代码更易于理解和维护。