【Java 8 新特性】Java 8 IntStream, LongStream和DoubleStream的使用示例

本文详细介绍了Java 8中的IntStream、LongStream和DoubleStream的使用,通过代码示例展示了如何创建、操作和聚合这些原始类型流,包括范围闭合、求和、排序和过滤等操作。同时,还演示了LongStream和DoubleStream的类似用法,以及如何计算平均值和查找最大值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java 8 IntStream, LongStream和DoubleStream的使用示例


在本页中,我们将提供Java8 IntStreamLongStreamDoubleStream的示例。
IntStreamLongStreamDoubleStream分别是原 int流、原 long流和原 double流的特化。

这些接口有许多有用的方法。它们在使用类中提供初始化的静态方法。

IntStream

java.util.stream.IntStream是原始integer值的序列。

maxaverage这样的聚合操作可以使用顺序和并行操作来执行。

rangeClosed(a,b):提供一个从a到b的整数流。
range(a,b):提供一个从a到b-1的整数流。
sum:计算值之和。
sorted:对值进行排序。

代码示例

IntStreamDemo.java

package com.concretepage;
import java.util.stream.IntStream;
public class IntStreamDemo {
	public static void main(String[] args) {
		System.out.println("--Using IntStream.rangeClosed--");
		IntStream.rangeClosed(13, 15).map(n->n*n).forEach(s->System.out.print(s +" "));
		System.out.println("\n--Using IntStream.range--");
		IntStream.range(13,15).map(n->n*n).forEach(s->System.out.print(s +" "));
		System.out.println("\n--Sum of range 1 to 10--");
		System.out.print(IntStream.rangeClosed(1,10).sum());
		System.out.println("\n--Sorted number--");
		IntStream.of(13,4,15,2,8).sorted().forEach(s->System.out.print(s +" "));
	}
}

输出

--Using IntStream.rangeClosed--
169 196 225 
--Using IntStream.range--
169 196 
--Sum of range 1 to 10--
55
--Sorted number--
2 4 8 13 15  

LongStream

java.util.stream.LongStream是原始long值的序列。

聚合操作可以使用顺序和并行操作来执行。

方法和 IntStream相同。

代码示例

LongStreamDemo.java

package com.concretepage;
import java.util.stream.LongStream;
public class LongStreamDemo {
	public static void main(String[] args) {
		System.out.println("--Using LongStream.rangeClosed--");
		LongStream.rangeClosed(13, 15).map(n->n*n).forEach(s->System.out.print(s +" "));
		System.out.println("\n--Using LongStream.range--");
		LongStream.range(13,15).map(n->n*n).forEach(s->System.out.print(s +" "));
		System.out.println("\n--Sum of range 1 to 10--");
		System.out.print(LongStream.rangeClosed(1,10).sum());
		System.out.println("\n--Sorted number--");
		LongStream.of(13,4,15,2,8).sorted().forEach(s->System.out.print(s +" "));
	}
} 

输出

--Using LongStream.rangeClosed--
169 196 225 
--Using LongStream.range--
169 196 
--Sum of range 1 to 10--
55
--Sorted number--
2 4 8 13 15  

DoubleStream

java.util.stream.DoubleStream是原始double值的序列。

聚合操作可以使用顺序和并行操作来执行。

average:计算平均值。
max:查找最大值。

代码示例

DoubleStreamDemo.java

package com.concretepage;
import java.util.function.DoublePredicate;
import java.util.stream.DoubleStream;
public class DoubleStreamDemo {
	public static void main(String[] args) {
		System.out.println("--Using DoubleStream.of--");
		DoubleStream.of(5.33,2.34,5.32,2.31,3.51).map(d->d*1.5).forEach(s->System.out.print(s +" "));
		System.out.println("\n--Using DoubleStream.average--");
		double val = DoubleStream.of(12.1,11.2,13.3).average().getAsDouble();
		System.out.println(val);
		System.out.println("--Using DoubleStream.max--");
		val = DoubleStream.of(12.1,11.2,13.3).max().getAsDouble();
		System.out.println(val);
		System.out.println("--Using DoubleStream.filter--");
		DoublePredicate range = d -> d > 12.11 && d < 12.99;		
		DoubleStream.of(12.1,11.2,12.3).filter(range).forEach(d->System.out.print(d));
	}
} 

输出

--Using DoubleStream.of--
7.995 3.51 7.98 3.465 5.265 
--Using DoubleStream.average--
12.200000000000001
--Using DoubleStream.max--
13.3
--Using DoubleStream.filter--
12.3 

参考文献

【1】Java 8 IntStream, LongStream and DoubleStream Example

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫巳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值