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

Java中如何使用streamAPI进行函数式编程?

发布时间:2023-06-30 14:05:49

Java中的Stream API是从Java 8版本开始引入的,它提供了一种函数式编程的方式来处理集合和数组,可以简化代码并提高代码的可读性和性能。

1. 创建Stream

Stream API 提供了多种方式创建Stream:

- 通过集合创建Stream

List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream();

- 通过数组创建Stream

String[] array = new String[]{"a", "b", "c"};
Stream<String> stream = Arrays.stream(array);

- 通过Stream.of()创建Stream

Stream<String> stream = Stream.of("a", "b", "c");

- 通过Stream.iterate()创建无限Stream

Stream<Integer> stream = Stream.iterate(0, n -> n + 1);

2. 中间操作

Stream API 提供了多个中间操作方法,可以用来对Stream进行过滤、映射、排序等操作:

- filter():过滤元素

Stream<String> stream = list.stream().filter(s -> s.startsWith("a"));

- map():对元素进行映射

Stream<String> stream = list.stream().map(s -> s.toUpperCase());

- sorted():排序

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

- distinct():去重

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

- limit():限制元素个数

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

- skip():跳过元素

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

3. 终止操作

Stream API 提供了多个终止操作方法,用来处理Stream并获取结果:

- forEach():遍历元素

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

- toArray():将Stream转换为数组

String[] array = stream.toArray(String[]::new);

- collect():将Stream中的元素收集到集合中

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

- reduce():将Stream中的元素进行累加,返回累积结果

Optional<Integer> result = stream.reduce((a, b) -> a + b);

- count():返回Stream中的元素个数

long count = stream.count();

- min()、max():返回Stream中的最小或最大值

Optional<Integer> min = stream.min((a, b) -> a - b);
Optional<Integer> max = stream.max((a, b) -> a - b);

4. 并行流

Stream API 提供了并行流的支持,可以充分发挥多核处理器的优势,提高处理速度:

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

5. 例子

下面是一个使用Stream API的示例,对一个字符串列表进行过滤、映射和排序操作:

List<String> list = Arrays.asList("apple", "banana", "cherry");
List<String> result = list.stream()
    .filter(s -> s.length() > 5)
    .map(s -> s.toUpperCase())
    .sorted()
    .collect(Collectors.toList());
System.out.println(result);

输出结果为:[BANANA, CHERRY]

总结:

Stream API 是Java中一种强大的函数式编程工具,可以方便地对集合和数组进行处理。它提供了丰富的中间操作和终止操作方法,可以灵活地进行数据过滤、映射、排序和聚合等操作。同时,Stream API还支持并行处理,可以充分发挥多核处理器的优势,提高处理速度。通过学习和运用Stream API,可以使代码更加简洁、高效且易于理解。