【Java 8 新特性】Java 8 Stream flatMapToInt, flatMapToLong和flatMapToDouble使用示例

在本页中,我们将提供Java8flatMapToIntflatMapToLongflatMapToDouble示例。flatMapToInt用于int数据类型,flatMapToLong用于long数据类型,flatMapToDouble用于double数据类型。它们的行为与flatMap相同,但用于基本数据类型。

flatMapToInt

它用于原始数据类型int。它返回IntStream

java文档原文。

'Returns an IntStream consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element.'

“返回一个IntStream,它由将提供的映射函数应用于每个元素所产生的映射流的内容替换此流的每个元素的结果组成。”

FlatMapToIntDemo.java

package com.concretepage;
import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
public class FlatMapToIntDemo {
	public static void main(String[] args) {
		int[][] data = {{1,2},{3,4},{5,6}};
		IntStream is1 = Arrays.stream(data).flatMapToInt(row -> Arrays.stream(row));
		System.out.println(is1.sum());
		
		int[] l1 = {4,8,9};
		IntDemoPerson p1 = new IntDemoPerson("Ram", l1);
		int[] l2 = {2,7,8};
		IntDemoPerson p2 = new IntDemoPerson("Shyam", l2);		
		List<IntDemoPerson> list = Arrays.asList(p1,p2);
		IntStream is2 = list.stream().flatMapToInt(row -> Arrays.stream(row.getLuckyNum()));
		System.out.println(is2.max().getAsInt());
	}
}
class IntDemoPerson {
	private String name;
	private int[] luckyNum;
	public IntDemoPerson(String name, int[] luckyNum){
		this.name = name;
		this.luckyNum = luckyNum;
	}
	public String getName() {
		return name;
	}
	public int[] getLuckyNum() {
		return luckyNum;
	}
} 

输出

21
9 

flatMapToLong

它用于原始数据类型long。它返回LongStream

java文档原文。
"Returns an LongStream consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element."

“返回一个LongStream,该LongStream由将提供的映射函数应用于每个元素而生成的映射流的内容替换此流的每个元素的结果组成。”

FlatMapToLongDemo.java

package com.concretepage;
import java.util.Arrays;
import java.util.List;
import java.util.stream.LongStream;
public class FlatMapToLongDemo {
	public static void main(String[] args) {
		long[][] data = {{1L,2L},{3L,4L},{5L,6L}};
		LongStream ls1 = Arrays.stream(data).flatMapToLong(row -> Arrays.stream(row));
		System.out.println(ls1.sum());
		
		long[] l1 = {4l,8l,9l};
		LongDemoPerson p1 = new LongDemoPerson("Ram", l1);
		long[] l2 = {2l,7l,8l};
		LongDemoPerson p2 = new LongDemoPerson("Shyam", l2);		
		List<LongDemoPerson> list = Arrays.asList(p1,p2);
		LongStream ls2 = list.stream().flatMapToLong(row -> Arrays.stream(row.getLuckyNum()));
		System.out.println(ls2.min().getAsLong());
	}
}
class LongDemoPerson {
	private String name;
	private long[] luckyNum;
	public LongDemoPerson(String name, long[] luckyNum){
		this.name = name;
		this.luckyNum = luckyNum;
	}
	public String getName() {
		return name;
	}
	public long[] getLuckyNum() {
		return luckyNum;
	}
} 

输出

21
2

flatMapToDouble

它用于原始数据类型double。它返回DoubleStream

java文档原文。
"Returns an DoubleStream consisting of the results of replacing each element of this stream with the contents of a mapped stream produced by applying the provided mapping function to each element"

“返回一个DoubleStream,它由将提供的映射函数应用于每个元素所产生的映射流的内容替换此流的每个元素的结果组成”

FlatMapToDoubleDemo.java

package com.concretepage;
import java.util.Arrays;
import java.util.List;
import java.util.stream.DoubleStream;
public class FlatMapToDoubleDemo {
	public static void main(String[] args) {
		double[][] data = {{1.5,2.4},{3.2,4.4},{5.2,6.8}};
		DoubleStream ds1 = Arrays.stream(data).flatMapToDouble(row -> Arrays.stream(row));
		System.out.println(ds1.average().getAsDouble());
		
		double[] d1 = {60.5,58.9, 62.5};
		DoubleDemoPerson p1 = new DoubleDemoPerson("Ram", d1);
		double[] d2 = {70.5,65.3,67.4};
		DoubleDemoPerson p2 = new DoubleDemoPerson("Shyam", d2);		
		List<DoubleDemoPerson> list = Arrays.asList(p1,p2);
		DoubleStream ds2 = list.stream().flatMapToDouble(row -> Arrays.stream(row.getWeightsInAYear()));
		System.out.println(ds2.min().getAsDouble());
	}
}
class DoubleDemoPerson {
	private String name;
	private double[] weightsInAYear;
	public DoubleDemoPerson(String name, double[] weightsInAYear){
		this.name = name;
		this.weightsInAYear = weightsInAYear;
	}
	public String getName() {
		return name;
	}
	public double[] getWeightsInAYear() {
		return weightsInAYear;
	}
} 

输出

3.9166666666666665
58.9 

参考文献

【1】Java 8 Stream flatMapToInt, flatMapToLong and flatMapToDouble Example

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

猫巳

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

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

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

打赏作者

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

抵扣说明:

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

余额充值