java新特性Stream流

Java 8 新特性:Stream 流

Stream 是 Java 8 中引入的新特性,用于对集合进行声明式操作。它提供了一种更简洁、更易于使用的方式来处理数据,尤其是在处理大量数据时。Stream 操作可以分为两大类:

  • 中间操作:对 Stream 进行操作,返回另一个 Stream。中间操作可以多次调用,并且不会立即执行。
  • 终端操作:从 Stream 中提取结果,并返回一个值或另一个集合。终端操作只能调用一次,并且会触发 Stream 的执行。

Stream 的优点

  • 简洁易用:Stream API 提供了简洁的语法,使代码更加易读易维护。
  • 延迟执行:Stream 操作不会立即执行,而是在需要结果时才执行。这使得 Stream 操作可以高效地处理大量数据。
  • 支持并行处理:Stream 操作可以并行执行,充分利用多核 CPU 的性能。

Stream 的基本用法

  1. 创建 Stream

可以通过以下几种方式创建 Stream:

  • 从集合创建 Stream:可以使用 Collection.stream() 方法从集合中创建 Stream。
  • 从数组创建 Stream:可以使用 Arrays.stream() 方法从数组中创建 Stream。
  • 从其他 Stream 创建 Stream:可以使用 Stream 的各种操作方法从其他 Stream 创建 Stream。
  1. 中间操作
    Stream 提供了丰富的中间操作,可以对 Stream 进行各种操作,例如:
  • 过滤:使用 filter() 方法过滤 Stream 中的元素。
  • 映射:使用 map() 方法将 Stream 中的元素映射为新的元素。
  • 排序:使用 sorted() 方法对 Stream 中的元素进行排序。
  • 聚合:使用 reduce() 方法将 Stream 中的元素聚合成一个值。
  1. 终端操作
    Stream 提供了多种终端操作,可以从 Stream 中提取结果,例如:
  • 收集:使用 collect() 方法将 Stream 中的元素收集到集合中。
  • 查找:使用 findFirst() 或 findAny() 方法查找 Stream 中的第一个或任何一个元素。
  • 匹配:使用 anyMatch() 或 allMatch() 方法检查 Stream 中的元素是否满足某个条件。
  • 计数:使用 count() 方法统计 Stream 中的元素个数。
  1. Stream 可以用于各种场景

例如:

  • 数据处理:Stream 可以高效地处理大量数据,例如过滤、排序、聚合等。
  • 并行编程:Stream 可以并行执行,充分利用多核 CPU 的性能。
  • 函数式编程:Stream 可以与函数式编程风格很好地结合,使代码更加简洁优雅。

Stream 流常用操作

1)forEach

1
2
stringList.forEach(System.out::println);

2)map

1
stringList.stream().map(i->i.equals("hello"));

3)filter

1
stringList.stream().filter(i->i.equals("hello"));

4)limit

1
integerList.stream().limit(3);

5)skip

1
integerList.stream().skip(5).limit(3);

6)distinct

1
integerList.stream().distinct().collect(Collectors.toList());

7)sorted

1
integerList.stream().sorted();

8)sorted(Comparator com)

1
integerList.stream().sorted(Comparator.comparing(Integer::intValue));

9)Collectors 收集器

1
2
3
4
5

list.stream().collect(Collectors.toList());
list.stream().collect(Collectors.toSet());
list.stream().collect(Collectors.toCollection());

总结

Stream 是 Java 8 中引入的重要特性,它简化了集合操作,提高了代码的可读性和可维护性,并支持并行处理,是 Java 开发人员必备的技能之一。