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

Java中的流函数的使用方式及示例

发布时间:2023-05-20 22:30:29

流(Stream)是Java 8中新增的一个功能,它可以用于对集合(Collection)和数组(Array)进行批量操作,以达到更加简洁、高效的代码编写。本文将介绍Java中的流函数的使用方式及示例。

1. 创建流

创建一个流需要以下三个步骤:

* 从一个集合或者数组创建一个流

* 对流进行操作

* 遍历流并处理数据

下面是创建一个List集合并将其转换为流的示例:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
Stream<Integer> stream = numbers.stream();

2. 流的操作

流的操作可以分类为两种:中间操作和终止操作。中间操作会返回一个新的流,而终止操作会根据流产生一个最终结果。

2.1 中间操作

中间操作可以对流进行过滤、排序、映射等操作。下面是一些常见的中间操作:

* filter:过滤流中不符合条件的元素

  List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
  Stream<Integer> stream = numbers.stream();
  Stream<Integer> filteredStream = stream.filter(n -> n % 2 == 0);
  

* map:对流中的每个元素进行操作后返回一个新的流

  List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
  Stream<Integer> stream = numbers.stream();
  Stream<String> stringStream = stream.map(String::valueOf);
  

* sorted:对流中的元素进行排序

  List<Integer> numbers = Arrays.asList(5, 4, 3, 2, 1);
  Stream<Integer> stream = numbers.stream();
  Stream<Integer> sortedStream = stream.sorted();
  

2.2 终止操作

终止操作会产生一个最终结果,例如对流求和、求最大值等操作。下面是一些常见的终止操作:

* forEach:遍历流中的元素并对每个元素执行操作

  List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
  Stream<Integer> stream = numbers.stream();
  stream.forEach(System.out::println);
  

* collect:将流中的元素收集到一个集合中

  List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
  Stream<Integer> stream = numbers.stream();
  List<Integer> newNumbers = stream.collect(Collectors.toList());
  

* reduce:对流中的元素进行归约操作,例如对所有元素求和

  List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
  Stream<Integer> stream = numbers.stream();
  Integer sum = stream.reduce(0, (a, b) -> a + b);
  

3. 完整示例

下面是一个完整的示例,演示了如何将一个List集合中的元素进行过滤并转换成一个Map,其中Map的键为元素的字符串形式,值为元素的长度。

List<String> strings = Arrays.asList("apple", "banana", "cherry", "durian", "orange");
Map<String, Integer> map = strings.stream()
        .filter(s -> s.length() > 5)
        .collect(Collectors.toMap(Function.identity(), String::length));
System.out.println(map);

运行结果如下:

{banana=6, cherry=6}

本文介绍了Java中流函数的使用方式及示例,演示了如何创建流、对流进行过滤、映射、排序等中间操作以及如何将流收集到集合中、对流进行归约操作等终止操作。流是Java中一个非常有用且强大的功能,它能够大大简化代码,并且提高代码的执行效率。