展现流的方法


public static <T> void show(String title, Stream<T> stream){
System.out.println("title:"+title); List<T> collect = stream.limit(10).collect(Collectors.toList());
collect.forEach(n->System.out.println(n));
System.out.println();
}

创建公共的list

ArrayList<String> arrayList = new ArrayList<>();
arrayList.add("aa");
arrayList.add("bb");
arrayList.add("cc"); Random random = new Random();
1. IntStream
//(1)创建IntStream
IntStream intStream = IntStream.of(1,1,2,3,4);
show("intStream", intStream.boxed()); //boxed() 基本类型流->对象流 intStream = IntStream.range(0, 5); //[int startInclusive, int endExclusive),不包括5
show("intStream", intStream.boxed()); intStream = IntStream.rangeClosed(0, 5); //[int startInclusive, int endExclusive],包括5
show("intStream", intStream.boxed()); intStream = IntStream.generate(()->new Random().nextInt());
show("intStream", intStream.boxed()); intStream = IntStream.iterate(0, n->n+8);
show("intStream", intStream.boxed()); IntStream mapToIntStream = arrayList.stream().mapToInt(String::length); //mapToInt 将对象流->基本类型流
show("mapToIntStream", mapToIntStream.boxed()); //codePoints->IntStream
IntStream codePointsIntStream = "世界上很好听的纯音乐(经典不朽)".codePoints();
show("codePointsIntStream", codePointsIntStream.boxed()); //charsIntStream->IntStream
IntStream charsIntStream = "世界上很好听的纯音乐(经典不朽)".chars();
show("charsIntStream", charsIntStream.boxed()); //产生随机数流
IntStream randomIntStream = random.ints();
show("randomIntStream", randomIntStream.boxed()); randomIntStream = random.ints(3); //指定stream size 3
show("randomIntStream", randomIntStream.boxed()); randomIntStream = random.ints(10, 15); //指定起点10, 边界15
show("randomIntStream", randomIntStream.boxed()); randomIntStream = random.ints(8, 10, 15); //指定stream size 8, 指定起点10, 边界15
show("randomIntStream", randomIntStream.boxed()); //(2)得到平均值, 和, 最大值, 最小值
//使用Supplier<T> 包装流,防止得到流已使用/关闭错误
Supplier<IntStream> intStreamSupplier = () -> IntStream.of(1,1,2,3,4);
System.out.println("intStream.average() "+intStreamSupplier.get().average().getAsDouble());
System.out.println("intStream.sum() "+intStreamSupplier.get().sum());
System.out.println("intStream.max() "+intStreamSupplier.get().max().getAsInt());
System.out.println("intStream.min() "+intStreamSupplier.get().min().getAsInt()); IntSummaryStatistics intSummaryStatistics = intStreamSupplier.get().summaryStatistics();
System.out.println("intStream.average() "+intSummaryStatistics.getAverage());
System.out.println("intStream.sum() "+intSummaryStatistics.getSum());
System.out.println("intStream.max() "+intSummaryStatistics.getMax());
System.out.println("intStream.min() "+intSummaryStatistics.getMin());
System.out.println(); //(3) IntStream -> 数组
int[] arrayIntStream = intStreamSupplier.get().toArray();
System.out.println("arrayIntStream "+Arrays.toString(arrayIntStream));
System.out.println(); //(4) mapToObjStream
Stream<String[]> mapToObjStream = IntStream.range(0, 15).mapToObj(x->new String[]{"asdas","vfvfvc","43fg","fgfg"});
mapToObjStream.forEach((x)->System.out.println(Arrays.toString(x)));
System.out.println();
2. LongStream
//(1)创建LongStream
LongStream longStream = LongStream.of(1,1,2,3,4);
show("longStream", longStream.boxed()); //boxed() 基本类型流->对象流 longStream = LongStream.range(0, 5); //[int startInclusive, int endExclusive),不包括5
show("longStream", longStream.boxed()); longStream = LongStream.rangeClosed(0, 5); //[int startInclusive, int endExclusive],包括5
show("longStream", longStream.boxed()); longStream = LongStream.generate(()->new Random().nextLong());
show("longStream", longStream.boxed()); longStream = LongStream.iterate(0, n->n+8);
show("longStream", longStream.boxed()); LongStream mapToLongStream = arrayList.stream().mapToLong(x->(long)x.length()); //mapToLong 将对象流->基本类型流
show("mapToLongStream", mapToLongStream.boxed()); //产生随机数流
LongStream randomLongStream = random.longs();
show("randomLongStream", randomLongStream.boxed()); randomLongStream = random.longs(3); //指定stream size 3
show("randomLongStream", randomLongStream.boxed()); randomLongStream = random.longs(10, 15); //指定起点10, 边界15
show("randomLongStream", randomLongStream.boxed()); randomLongStream = random.longs(8, 10, 15); //指定stream size 8, 指定起点10, 边界15
show("randomLongStream", randomLongStream.boxed()); //(2)得到平均值, 和, 最大值, 最小值
//使用Supplier<T> 包装流
Supplier<LongStream> longStreamSupplier = () -> LongStream.of(1,1,2,3,4);
System.out.println("longStream.average() "+longStreamSupplier.get().average().getAsDouble());
System.out.println("longStream.sum() "+longStreamSupplier.get().sum());
System.out.println("longStream.max() "+longStreamSupplier.get().max().getAsLong());
System.out.println("longStream.min() "+longStreamSupplier.get().min().getAsLong()); LongSummaryStatistics longSummaryStatistics = longStreamSupplier.get().summaryStatistics();
System.out.println("longStream.average() "+longSummaryStatistics.getAverage());
System.out.println("longStream.sum() "+longSummaryStatistics.getSum());
System.out.println("longStream.max() "+longSummaryStatistics.getMax());
System.out.println("longStream.min() "+longSummaryStatistics.getMin());
System.out.println(); //(3) LongStream -> 数组
long[] arrayLongStream = longStreamSupplier.get().toArray();
System.out.println("arrayLongStream "+Arrays.toString(arrayLongStream));
System.out.println();
3. DoubleStream
//(1)创建DoubleStream
DoubleStream doubleStream = DoubleStream.of(1.1,1.2,1.3,2.1,2.2);
show("doubleStream", doubleStream.boxed()); doubleStream = DoubleStream.generate(Math::random);
show("doubleStream", doubleStream.boxed()); doubleStream = DoubleStream.iterate(1.1, n->n+1.1);
show("doubleStream", doubleStream.boxed()); DoubleStream mapToDoubleStream = arrayList.stream().mapToDouble(x->(double)x.length()); //mapToDouble 将对象流->基本类型流
show("mapToDoubleStream", mapToDoubleStream.boxed()); //产生随机数流
DoubleStream randomDoubleStream = random.doubles();
show("randomDoubleStream", randomDoubleStream.boxed()); randomDoubleStream = random.doubles(3); //指定stream size 3
show("randomDoubleStream", randomDoubleStream.boxed()); randomDoubleStream = random.doubles(10.0, 15.0); //指定起点10, 边界15
show("randomDoubleStream", randomDoubleStream.boxed()); randomDoubleStream = random.doubles(8, 10.0, 15.0); //指定stream size 8, 指定起点10, 边界15
show("randomDoubleStream", randomDoubleStream.boxed()); //(2)得到平均值, 和, 最大值, 最小值
//使用Supplier<T> 包装流
Supplier<DoubleStream> doubleStreamSupplier = () -> DoubleStream.of(1.1,1.2,1.3,2.1,2.2);
System.out.println("doubleStream.average() "+doubleStreamSupplier.get().average().getAsDouble());
System.out.println("doubleStream.sum() "+doubleStreamSupplier.get().sum());
System.out.println("doubleStream.max() "+doubleStreamSupplier.get().max().getAsDouble());
System.out.println("doubleStream.min() "+doubleStreamSupplier.get().min().getAsDouble()); DoubleSummaryStatistics doubleSummaryStatistics = doubleStreamSupplier.get().summaryStatistics();
System.out.println("doubleStream.average() "+doubleSummaryStatistics.getAverage());
System.out.println("doubleStream.sum() "+doubleSummaryStatistics.getSum());
System.out.println("doubleStream.max() "+doubleSummaryStatistics.getMax());
System.out.println("doubleStream.min() "+doubleSummaryStatistics.getMin());
System.out.println(); //(3) LongStream -> 数组
double[] arrayDoubleStream = doubleStreamSupplier.get().toArray();
System.out.println("arrayDoubleStream "+Arrays.toString(arrayDoubleStream));
System.out.println();
4. 对应的,创建short,char,byte,boolean,float流
Stream<Boolean> booleanStream = Arrays.stream(new Boolean[]{true,false,false,true});
show("booleanStream", booleanStream);

J2SE 8的流库 --- 基本类型流的使用的更多相关文章

  1. 流API--原始类型流

    到目前为止,我们已经将整型收集到了一个Stream<Integer>的流中,不过将每个整数包装成相应对象显然是一个低效的做法,对于其他的基本类型也是一样,我们前面说过jdk提供包装类已经自 ...

  2. J2SE 8的流库 --- 生成流

    本文介绍了如何产生J2SE 8的流, 包括基本类型的流IntStream, LongStream, DoubleStream . 展现流的方法 public static <T> void ...

  3. J2SE 8的流库 --- 转换流, 得到的还是流

    流的转换, 按照条件过滤/映射/摊平/截取/丢弃/连接/去重/排序. 辅助方法 public static int myCompare(String x, String y) { if(x.lengt ...

  4. Java SE 8 流库

    1. 流的作用 通过使用流,说明想要完成什么任务,而不是说明如何去实现它,将操作的调度留给具体实现去解决: 实例:假如我们想要计算某个属性的平均值,那么我们就可以指定数据源和属性,然后,流库就可以对计 ...

  5. Java SE 8 流库(一)

    1. 流的作用 通过使用流,说明想要完成什么任务,而不是说明如何去实现它,将操作的调度留给具体实现去解决: 实例:假如我们想要计算某个属性的平均值,那么我们就可以指定数据源和属性,然后,流库就可以对计 ...

  6. Java SE 8 的流库学习笔记

    前言:流提供了一种让我们可以在比集合更高的概念级别上指定计算的数据视图.如: //使用foreach迭代 long count = 0; for (String w : words) { if (w. ...

  7. Java高级特性1_流库_初体验

    Java高级特性流库_初体验 面对结果编程 在编程里, 有两种编程方式, 一种是面对过程编程, 一种是面对结果编程. 两者区别如下 面向过程编程 面向过程编程需要编程程序让程序依次执行得到自己想要的结 ...

  8. 第01章-Java SE8的流库

    从迭代到流的操作 流表面上看起来和集合很类似,都可以让我们转换和获取数据,但是它们之间存在着显著的差异 流并不存储其元素,这些元素可能存储在底层的集合中,或者是按需生成的 流的操作不会修改其数据源 流 ...

  9. Java SE 8 流库(二)

    1.3. filter,map,flatMAP方法 流的转换会产生一个新流,它的元素派生出自另一个流中的元素: Stream<T> filter(Predicate<? super ...

随机推荐

  1. java高并发编程(一)

    读马士兵java高并发编程,引用他的代码,做个记录. 一.分析下面程序输出: /** * 分析一下这个程序的输出 * @author mashibing */ package yxxy.c_005; ...

  2. Scala集合类型详解

    Scala集合 Scala提供了一套很好的集合实现,提供了一些集合类型的抽象. Scala 集合分为可变的和不可变的集合. 可变集合可以在适当的地方被更新或扩展.这意味着你可以修改,添加,移除一个集合 ...

  3. 廖雪峰Java1-4数组操作-4多维数组

    二维数组 二维数组就是元素为数组的数组 二维数组每个数组的长度不要求一样.比如 int[][] = { { 1, 2 }, { 3, 4, 5 }, { 6, 7, 8, 9 } } int[][] ...

  4. java中友元的完美实现(转载)

    http://blog.sina.com.cn/s/blog_ce5b9f7e0102vhiv.html C++中有一个友元机制,可以给予一个类访问另一个类中私有成员的权限.   这个机制有时候是很有 ...

  5. MFC (如何通过点击botton打开一个文件夹/文件)

    1.建一个MFC的工程,类型为基于对话框.在工具箱里拖进去一个button按键,如下图. 2.双击button1按键就可以进入到点击button1后要执行操作的代码,编写如下代码实现网页/文件夹或者文 ...

  6. AAA及Radius

    一.AAA(Authentication.Authorization.Accounting) 验证.授权和记费 验证 Authentication :验证用户身份 授权 Authorization : ...

  7. [UE4]复制引起的重复对象

    一.在角色的BeginPlay事件中,在角色正前方1米到2米处生成一立方体. 二.开启2个玩家,第一个创建是服务器端,第二个窗口是客户端.可以看到:服务器端窗口创建了2个灰色的立方体,客户端却创建了4 ...

  8. android切换前后台状态监听

    public class BaseApplication extends Application { private static BaseApplication instance; /** * 当前 ...

  9. C++和C#进程之间通过命名管道通信(上)

    C++和C#进程之间通过命名管道通信(上) "命名管道"是一种简单的进程间通信(IPC)机制.命名管道可在同一台计算机的不同进程之间,或在跨越一个网络的不同计算机的不同进程之间,支 ...

  10. MAC 无脑编译OpenCV

    1:准备好OpenCV 源码包 下载地址:https://opencv.org/releases.html 编译教程:https://blog.csdn.net/computerme/article/ ...