📜  Java中的 LongStream 迭代器()(1)

📅  最后修改于: 2023-12-03 15:01:55.215000             🧑  作者: Mango

Java中的 LongStream 迭代器

在Java中,LongStream迭代器提供了一种处理长整型数据的流的机制,可以进行类似于Stream的操作,如过滤、map、reduce等操作。它是Java 8中添加的java.util.stream.LongStream中的一部分。

由于LongStream迭代器是专门为处理基本类型long而设计的,它可以提供比Stream更高效的处理方式,因为不需要将基本类型转换为包装类Long来进行操作。

创建 LongStream 迭代器

我们可以使用以下方法创建LongStream迭代器:

LongStream longStream1 = LongStream.of(1L, 2L, 3L, 4L, 5L); // 从数组创建LongStream
LongStream longStream2 = LongStream.range(1L, 10L); // 从给定范围创建LongStream
LongStream longStream3 = LongStream.iterate(1L, n -> n + 1L); // 从迭代函数创建LongStream
  • LongStream.of()方法从指定的long数组中创建LongStream。
  • LongStream.range()方法创建一个LongStream,从指定的起始值开始,在结束值之前,每次以1递增。
  • LongStream.iterate()方法创建一个LongStream,通过迭代函数生成下一个long值。
LongStream 迭代器常用方法
中间操作

我们可以对LongStream迭代器进行一系列过滤、转换和排序等中间操作。

以下是Lambda表达式的一些例子,让您了解一些常见的中间操作:

LongStream longStream = LongStream.range(1L, 10L);

// 过滤偶数
longStream.filter(n -> n % 2 == 0);

// 转换为字符串
longStream.mapToObj(Long::toString);

// 排序
longStream.sorted();
  • filter()方法使得只能保留符合条件的元素,可以过滤掉所有非数字。
  • mapToObj()方法将每个数字转换成他的字符串。
  • sorted()方法会将LongStream中的元素进行排序。
终端操作

终端操作是指对LongStream执行操作,产生最终结果的操作。以下是一些常见的终端操作:

LongStream longStream = LongStream.range(1L, 10L);

// 将LongStream合并为List
List<Long> list = longStream.boxed().collect(Collectors.toList());

// 将LongStream作为数组返回
long[] longArray = longStream.toArray();

// 计算总和
long sum = longStream.sum();

// 从LongStream中得到一个OptionalLong对象
OptionalLong optional = longStream.max();

// 转换为其他类型的Stream
Stream<Long> stream = longStream.mapToObj(Long::valueOf);
  • collect()方法使用Collectors.toList()方法将LongStream转换为List。
  • toArray()方法将LongStream转换为数组。
  • sum()方法计算LongStream中所有元素的总和。
  • max()方法返回LongStream中最大的元素。
  • mapToObj()方法将LongStream转换为Stream
总结

LongStream迭代器提供了一种处理长整型数据的机制,可以进行类似于Stream的操作。使用LongStream而不是Stream可以提高应用程序的效率,因为不需要将包装类Long转换为基本类型。我们可以通过各种中间操作,对LongStream进行转换、变形、聚合等操作,并通过各种终端操作得到最终结果。