Java中的stream API: 操作集合和数组的高效方法
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 可以提高代码的执行效率,同时也可以提高代码的可读性。
