📅  最后修改于: 2023-12-03 15:01:55.215000             🧑  作者: Mango
在Java中,LongStream迭代器提供了一种处理长整型数据的流的机制,可以进行类似于Stream的操作,如过滤、map、reduce等操作。它是Java 8中添加的java.util.stream.LongStream中的一部分。
由于LongStream迭代器是专门为处理基本类型long而设计的,它可以提供比Stream更高效的处理方式,因为不需要将基本类型转换为包装类Long来进行操作。
我们可以使用以下方法创建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迭代器进行一系列过滤、转换和排序等中间操作。
以下是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转换为StreamLongStream迭代器提供了一种处理长整型数据的机制,可以进行类似于Stream的操作。使用LongStream而不是Stream可以提高应用程序的效率,因为不需要将包装类Long转换为基本类型。我们可以通过各种中间操作,对LongStream进行转换、变形、聚合等操作,并通过各种终端操作得到最终结果。