欢迎访问宙启技术站
智能推送

Java中的Stream函数(Function)使用方法详解

发布时间:2023-06-24 15:02:08

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函数时有所帮助。