Java Stream 是 Java 8 引入的新特性之一,它提供了一种新的处理数据集合的方式。Stream 可以使我们更加方便地对集合进行处理和操作,同时还能提高代码的简洁性和可读性。
什么是 Stream
Stream 是对集合功能的增强,它并不是数据结构,不会保存数据。它可以从集合中获得许多流式处理的优势,如过滤、映射、排序和归约等操作。
常见用法
创建 Stream
Stream 可以通过调用集合对象的 stream()
方法来创建。例如:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); Stream<Integer> stream = numbers.stream();
中间操作
中间操作是 Stream 的一种特殊操作,它可以对 Stream 进行转换和处理,但并不会立即执行。常见的中间操作有:
filter(Predicate<T> predicate)
: 过滤掉不满足条件的元素。map(Function<T, R> mapper)
: 将元素通过给定的函数进行转换。sorted(Comparator<T> comparator)
: 对元素进行排序。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); Stream<Integer> stream = numbers.stream().filter(n -> n % 2 == 0).map(n -> n * n).sorted();
终端操作
终端操作是 Stream 的最后一步操作,它会触发 Stream 的执行。常见的终端操作有:
forEach(Consumer<T> action)
: 对每个元素执行给定的操作。collect(Collector<T, A, R> collector)
: 将 Stream 中的元素转换为一个结果集合。count()
: 返回 Stream 中的元素个数。
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5); numbers.stream().forEach(System.out::println); int sum = numbers.stream().filter(n -> n % 2 == 0).mapToInt(Integer::intValue).sum();
总结
Java Stream 是一种简化集合处理的方式,它提供了丰富的操作方法来处理集合中的元素。通过中间操作和终端操作的组合,我们可以轻松地实现各种集合处理需求。Stream 的引入大大简化了代码的编写过程,提高了代码的可读性和可维护性。