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

Java中的stream API: 操作集合和数组的高效方法

发布时间:2023-05-21 09:50:06

Stream API 是 Java 8 引入的一种新的高效的操作集合和数组的方式。使用 Stream API 可以轻松地对集合、数组等进行各种操作,比如过滤、映射、转换等等。在本文中,我们将详细介绍 Java 中的 Stream API。

Stream API 简介

Stream API 是 Java 8 中新增的一种处理集合和数组的方式,可以用来代替传统的 for 循环。Stream API 应用了函数式编程的思想,可以方便地进行各种操作,比如过滤、映射、排序、计算等等。Stream API 可以直接操作集合等容器,不需要创建中间集合,可以提高代码的执行效率。

Stream API 的优势

Stream API 的主要优势有以下几点:

1. 高效性:Stream API 直接在集合和数组上操作,不需要创建中间集合,可以提高代码的执行效率。

2. 容易理解:Stream API 的操作都是基于函数式编程的思想,代码比传统的 for 循环更加简洁明了,容易理解。

3. 代码可读性强:Stream API 的操作代码具有高可读性,可以轻松地实现各种函数式操作,比如过滤、排序、计算、映射等。

使用 Stream API

Stream API 是使用 java.util.stream 包中的 Stream 类和相关接口实现的。使用 Stream API 的步骤主要有以下几个:

1. 获取 Stream 对象:可以通过集合类的 stream 方法或者数组类的 Arrays.stream 方法获取 Stream 对象。

2. 对 Stream 进行操作:可以使用 Stream 类中的各种方法对 Stream 进行操作,比如 filter、map、sorted 等等。

3. 终止操作:可以使用 Stream 类中的各种终止操作方法来执行操作,比如 forEach、reduce、collect 等等。

下面我们将分别介绍上述步骤。

1. 获取 Stream 对象

可以通过集合类的 stream 方法或者数组类的 Arrays.stream 方法获取 Stream 对象。例如:

List<String> list = Arrays.asList("apple", "banana", "orange");

Stream<String> stream1 = list.stream();

String[] array = {"apple", "banana", "orange"};

Stream<String> stream2 = Arrays.stream(array);

2. 对 Stream 进行操作

可以使用 Stream 类中的各种方法对 Stream 进行操作。下面是几个常用的操作方法:

filter:用于过滤元素,返回一个新的 Stream 对象。

map:用于将元素映射为另一个元素,返回一个新的 Stream 对象。

sorted:用于对元素进行排序,返回一个新的 Stream 对象。

distinct:用于去除重复元素,返回一个新的 Stream 对象。

下面是一些使用 Stream API 进行操作的示例代码:

1. 过滤元素

List<String> list = Arrays.asList("apple", "banana", "orange", "peach", "watermelon");

Stream<String> stream = list.stream();

stream.filter(s -> s.length() > 5).forEach(System.out::println);

输出结果为:orange,peach,watermelon。

2. 映射元素

List<String> list = Arrays.asList("apple", "banana", "orange", "peach", "watermelon");

Stream<String> stream = list.stream();

stream.map(s -> s.toUpperCase()).forEach(System.out::println);

输出结果为:APPLE,BANANA,ORANGE,PEACH,WATERMELON。

3. 排序元素

List<Integer> list = Arrays.asList(3, 8, 1, 5, 6, 4);

Stream<Integer> stream = list.stream();

stream.sorted().forEach(System.out::print);

输出结果为:1,3,4,5,6,8。

4. 去除重复元素

List<String> list = Arrays.asList("apple", "banana", "orange", "banana", "peach", "orange", "watermelon");

Stream<String> stream = list.stream();

stream.distinct().forEach(System.out::println);

输出结果为:apple,banana,orange,peach,watermelon。

3. 终止操作

可以使用 Stream 类中的各种终止操作方法来执行操作。下面是几个常用的终止操作方法:

forEach:用于对 Stream 中的元素进行迭代。

reduce:用于将 Stream 中的所有元素合并为一个结果。

collect:用于将 Stream 中的元素收集到指定容器中。

下面是一些使用 Stream API 进行终止操作的示例代码:

1. 迭代输出

List<String> list = Arrays.asList("apple", "banana", "orange");

Stream<String> stream = list.stream();

stream.forEach(System.out::println);

输出结果为:apple,banana,orange。

2. 求和

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6);

Stream<Integer> stream = list.stream();

int sum = stream.reduce(0, Integer::sum);

System.out.println(sum);

输出结果为:21。

3. 收集元素

List<String> list = Arrays.asList("apple", "banana", "orange");

Stream<String> stream = list.stream();

List<String> newList = stream.collect(Collectors.toList());

System.out.println(newList);

输出结果为:[apple, banana, orange]。

总结

Stream API 提供了一种高效、简洁、可读性强的处理集合和数组的方式。使用 Stream API 可以方便地进行各种操作,比如过滤、映射、排序、计算等等。在使用 Stream API 时,首先需要通过集合类的 stream 方法或者数组类的 Arrays.stream 方法获取 Stream 对象,然后对 Stream 对象进行操作,最后使用 Stream 类中的各种终止操作方法来执行操作。使用 Stream API 可以提高代码的执行效率,同时也可以提高代码的可读性。