Java中的Stream函数(Function)使用方法详解
Java中的Stream函数(Function)是一种函数式编程的概念,用于对集合进行流式操作。它是Java 8中新加入的特性,它允许我们对集合中的元素进行各种各样的操作,如过滤、映射、排序等等,使得代码更加简洁、易读、易维护。本文将详细介绍Stream函数的使用方法。
1. 创建Stream
Java中的Stream可以由集合、数组、IO流等对象创建。以下是几种创建方式的示例。
1.1 通过集合创建
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream();
1.2 通过数组创建
String[] array = new String[] {"a", "b", "c"};
Stream<String> stream = Arrays.stream(array);
1.3 通过Stream.of()创建
Stream<String> stream = Stream.of("a", "b", "c");
1.4 通过读取文件创建
try(Stream<String> stream = Files.lines(path)) {
stream.forEach(System.out::println);
}
2. 中间操作
Stream中可以进行中间操作,中间操作并不会立即执行,而是等到执行终止操作时才会执行。
2.1 filter:过滤操作
filter方法用于过滤元素,参数是一个Predicate,作为判断条件。以下是一个示例,过滤出大于0的元素。
List<Integer> numbers = Arrays.asList(-1, 0, 1, 2, 3);
Stream<Integer> stream = numbers.stream().filter(n -> n > 0);
2.2 map:映射操作
map方法用于将元素映射成其它类型的元素,参数是一个Function。以下是一个示例,将大写字母转换为小写字母。
Stream<String> stream = Stream.of("A", "B", "C").map(s -> s.toLowerCase());
2.3 flatMap:扁平化操作
flatMap方法用于将多个流合成一个流,参数是一个Function返回一个Stream。以下是一个示例,将多个字符串流合成一个流。
Stream<String> stream = Stream.of("language", "monk").flatMap(s -> Stream.of(s.split("")));
2.4 distinct:去重操作
distinct方法用于去除重复的元素。
Stream<Integer> stream = Stream.of(1, 2, 3, 1, 2, 3).distinct();
2.5 sorted:排序操作
sorted方法用于对元素进行排序。
Stream<Integer> stream = Stream.of(2, 3, 1, 4, 5).sorted();
2.6 limit:限制操作
limit方法用于限制流中元素的数量。
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5).limit(3);
2.7 skip:跳过操作
skip方法用于跳过流中的前n个元素。
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5).skip(2);
3. 终止操作
Stream中的终止操作会触发中间操作的执行,并返回一个结果。以下是终止操作的示例。
3.1 forEach:遍历操作
forEach方法用于遍历流中的元素。
Stream<String> stream = Stream.of("a", "b", "c");
stream.forEach(System.out::println);
3.2 reduce:聚合操作
reduce方法用于将Stream中的所有元素聚合成一个结果。
Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5);
Optional<Integer> result = stream.reduce((x, y) -> x + y);
3.3 collect:收集操作
collect方法用于将Stream中的元素收集到一个集合中。
Stream<String> stream = Stream.of("a", "b", "c");
List<String> list = stream.collect(Collectors.toList());
3.4 count:计数操作
count方法用于计算Stream中元素的数量。
Stream<String> stream = Stream.of("a", "b", "c");
long count = stream.count();
4. 并行流
并行流是Stream中的一种特殊形式,它可以将集合划分成多个任务,每个任务由一个线程执行,从而加快执行速度。
以下是并行流的创建和使用示例。
List<String> list = Arrays.asList("a", "b", "c");
long count = list.parallelStream().filter(s -> s.contains("a")).count();
以上就是关于Stream函数的介绍和使用方法,希望对大家在使用Java中的Stream函数时有所帮助。
