1. public class Test08 {
  2. /*
  3. * 二、中间的加工操作
  4. * (1)filter(Predicate p):过滤
  5. * (2)distinct():去重
  6. * (3)limit(long maxSize):取有限的几个
  7. * (4)skip(long n):跳过n个
  8. * (5)peek(Consumer action) 接收Lambda表达式,对流中的每个数据执行Lambda体操作
  9. * (6)sorted():排序,按照自然排序
  10. * sorted(Comparator com):排序,按照定制排序
  11. * (7)map(Function f):接收Lambda表达式,对流中的每个数据,执行Lambda体操作,返回新的数据构成新的流
  12. * (8)flatMap(Function f)
  13. *
  14. * map(Function<? super T,? extends R> mapper) map操作流中的把T对象变成R对象,由R对象构成新的流
  15. * flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
  16. * flatMap把流中的数据T对象压扁变成一个Stream,然后把一个个的Stream最后再合成一个大的Stream
  17. */
  18. public static void main(String[] args) {
  19. // test01();
  20. // test02();
  21. // test03();
  22. // test04();
  23. // test05();
  24. // test06();
  25. // test07();
  26. // test08();
  27. // test09();
  28. // test10();
  29. // test11();
  30. test12();
  31. }
  32.  
  33. public static void test01() {
  34. //1、创建Stream
  35. Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6);
  36.  
  37. //2、加工处理
  38. //过滤:filter(Predicate p)
  39. //把里面的偶数拿出来
  40. /*
  41. * filter(Predicate p)
  42. * Predicate是函数式接口,抽象方法:boolean test(T t)
  43. */
  44. stream = stream.filter(t -> t % 2 == 0);
  45.  
  46. //3、终结操作:例如:遍历
  47. stream.forEach(System.out::println);
  48. }
  49.  
  50. //连起来写
  51. public static void test02() {
  52. Stream.of(1, 2, 3, 4, 5, 6)
  53. .filter(t -> t % 2 == 0)
  54. .forEach(System.out::println);
  55. }
  56.  
  57. //去重
  58. public static void test03() {
  59. Stream.of(1, 2, 3, 4, 5, 6, 2, 2, 3, 3, 4, 4, 5)
  60. .distinct()
  61. .forEach(System.out::println);
  62. }
  63.  
  64. //取指定数量
  65. public static void test04() {
  66. Stream.of(1, 2, 3, 4, 5, 6, 2, 2, 3, 3, 4, 4, 5)
  67. .limit(3)
  68. .forEach(System.out::println);
  69. }
  70.  
  71. //去重加过滤
  72. public static void test05() {
  73. Stream.of(1, 2, 2, 3, 3, 4, 4, 5, 2, 3, 4, 5, 6, 7)
  74. .distinct() //(1,2,3,4,5,6,7)
  75. .filter(t -> t % 2 != 0) //(1,3,5,7)
  76. .limit(3)
  77. .forEach(System.out::println);
  78. }
  79.  
  80. //跳过指定的位置
  81. public static void test06() {
  82. Stream.of(1, 2, 3, 4, 5, 6, 2, 2, 3, 3, 4, 4, 5)
  83. .skip(5)
  84. .forEach(System.out::println);
  85. }
  86.  
  87. //跳过 去重 过滤
  88. public static void test07() {
  89. Stream.of(1, 2, 3, 4, 5, 6, 2, 2, 3, 3, 4, 4, 5)
  90. .skip(5)
  91. .distinct()
  92. .filter(t -> t % 3 == 0)
  93. .forEach(System.out::println);
  94. }
  95.  
  96. public static void test08() {
  97. long count = Stream.of(1, 2, 3, 4, 5, 6, 2, 2, 3, 3, 4, 4, 5)
  98. .distinct()
  99. .peek(System.out::println) //Consumer接口的抽象方法 void accept(T t)
  100. .count();//终止操作
  101. System.out.println("count=" + count);
  102. }
  103.  
  104. public static void test09() {
  105. //输出出前三个最大值,前三名最大的,不重复
  106. Stream.of(11, 2, 39, 4, 54, 6, 2, 22, 3, 3, 4, 54, 54)
  107. .distinct()
  108. .sorted((t1, t2) -> -Integer.compare(t1, t2))//Comparator接口 int compare(T t1, T t2) 注意这里前面加了个-号(-Integer) 倒序
  109. .limit(3)
  110. .forEach(System.out::println);
  111. }
  112.  
  113. public static void test10() {
  114. Stream.of(1, 2, 3, 4, 5)
  115. .map(t -> t += 1)//Function<T,R>接口抽象方法 R apply(T t)
  116. .forEach(System.out::println);
  117. }
  118.  
  119. //转换成大写
  120. public static void test11() {
  121. String[] arr = {"hello", "world", "java"};
  122. Arrays.stream(arr).map(t -> t.toUpperCase())
  123. .forEach(System.out::println);
  124. }
  125.  
  126. public static void test12() {
  127. String[] arr = {"hello", "world", "java"};
  128. Stream<String> flatMap = Arrays.stream(arr)
  129. .flatMap(t -> Stream.of(t.split("|")));//Function<T,R>接口抽象方法 R apply(T t) 现在的R是一个Stream
  130. flatMap.forEach(System.out::println);
  131. }
  132.  
  133. }

Stream(三)的更多相关文章

  1. NodeJS Stream 三:readable

    什么是可读流 可读流是生产数据用来供程序消费的流.我们常见的数据生产方式有读取磁盘文件.读取网络请求内容等,看一下前面介绍什么是流用的例子: const rs = fs.createReadStrea ...

  2. NodeJS 难点(网络,文件)的 核心 stream 三:readable ?

    什么是可读流 可读流    常见  读取磁盘文件.读取网络请求内容等,看一下前面介绍什么是流用的例子: const rs = fs.createReadStream(filePath); 我们常见的控 ...

  3. 第二章 Stream API

    引例: 1 List<String> strList = Arrays.asList("zhaojigang","nana","tiany ...

  4. JAVA8之lambda表达式具体解释,及stream中的lambda使用

    前言: 本人也是学习lambda不久,可能有些地方描写叙述有误,还请大家谅解及指正! lambda表达式具体解释 一.问题 1.什么是lambda表达式? 2.lambda表达式用来干什么的? 3.l ...

  5. Stream闪亮登场

    Stream闪亮登场 一. Stream(流)是什么,干什么 Stream是一类用于替代对集合操作的工具类+Lambda式编程,他可以替代现有的遍历.过滤.求和.求最值.排序.转换等 二. Strea ...

  6. 1.2 Stream API

    引例: List<String> strList = Arrays.asList("zhaojigang","nana","tianya& ...

  7. Stream API

    引例: 1 List<String> strList = Arrays.asList("zhaojigang","nana","tiany ...

  8. Java 8创建Stream流的5种方法

    不知不觉间,Java已经发展到13了,来不及感慨时间过得真的太快了,来不及学习日新月异的技术更新,目前大多数公司还是使用的JDK8版本,一方面是版本的稳定,另一方面是熟悉,所以很多公司都觉得不升级也挺 ...

  9. java8(2)--- Stream API

    1.简述 Java8中有两大最为重要的改变.第一个是 Lambda 表达式:另外一 个就是 Stream API. Stream 是处理集合的抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复 ...

  10. [源码解析] 当 Java Stream 遇见 Flink

    [源码解析] 当 Java Stream 遇见 Flink 目录 [源码解析] 当 Java Stream 遇见 Flink 0x00 摘要 0x01 领域 1.1 Flink 1.2 Java St ...

随机推荐

  1. 现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?

    Thread t1 = new Thread(new T1()); Thread t2 = new Thread(new T2()); Thread t3 = new Thread(new T3()) ...

  2. 5.Strom-事务型拓扑

  3. 跟我一起学Redis之Redis概述

    背景 技术的更新迭代,是程序员最最最头大的事,总是在每个网络角落中有感慨声:学不动啦: 其实新技术并不是凭空而出,而是随着业务推进.数据驱动.技术积累促使开发者的不断探索和实践,最终横空出世--&qu ...

  4. xss利用——BeEF#stage2(初始并持续化控制)

    全文概览 浏览器攻击方法流程 攻击浏览器一般分为几个阶段,如下图 整个过程分为三个步骤,第一步是初始化控制,第二步是持续控制,第三步是攻击.在第三步中的七个攻击方法是可以交叉的,比如可以同时攻击用户和 ...

  5. 安装Ubuntu虚拟机

    centos已经满足不了我了,这里就装了个虚拟机,等有钱了再单配台单系统的Linux主机. 一.下载Ubuntu的ISO文件 用国内的网易镜像站点 进去点个16.04.6,然后下个64位的.iso就好 ...

  6. 注解在Spring中的运用(对象获取、对象单例/多例、值的注入、初始化/销毁方法、获取容器)

    1.注解的方式获取对象 (1)导包: (2)书写配置文件(要保证已经导入了约束): <?xml version="1.0" encoding="UTF-8" ...

  7. Java 使用UDP传输一个小文本文件

    工具1:Eclipse 工具2:IntelliJ IDEA Java工程的目录结构(基于IntelliJ IDEA) 例1.1:接收方,因为接收到的数据是字节流,为了方便,这里是基于Apache co ...

  8. Windows Server 2003 蓝屏 -- 系统故障:停止错误

    Windows Server 2003  EE 出现蓝屏: 0X0000004D (0X000f27D9, 0X000F27D9, 0X0000000C, 0X00000000) 蓝屏拍照: 重启机器 ...

  9. tslib-1.4移植(转)

    转自:http://blog.163.com/zhuandi_h/blog/static/180270288201222310291262/ 环境:host:Ubuntu11.10target:Oma ...

  10. nginx的变量系统

    本来想写一下nginx的脚本引擎的,但是看起来实在是有点庞大,一时间还不知道该从哪里写比较好.就先写一下他的变量系统吧,这是脚本引擎非常重要的组成部分. 首先为了表述清楚先规定几个术语吧 内置变量:n ...