Stream接口中的常用方法

刚刚开始写博客,有一些不到位的地方还请各位论坛大佬多多指点,谢谢!

  • forEach()方法
package cn.com.cqucc.demo02.StreamMethods.Test02.StreamMethods;import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;/**       forEach方法练习*          void forEach​(Consumer<? super T> action) 对此流的每个元素执行操作。*              参数 :*                  Consumer 是一个函数式接口,会将每一个流元素交给该函数去处理;*                  它是一个消费型函数式接口,由于是一个函数是接口,所以可以使用Lambda表达式。*               作用:*                  遍历数据。*               注意:*                  它是一个终结方法,使用之后就不能再使用Stream流中的其他方法了,否则会抛出异常。* */
public class Test01StreamForeach {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("张三");list.add("李四");list.add("王五");list.add("赵六");list.add("田七");list.add("王八");
//        1、先将list转换为Stream流Stream<String> stream = list.stream();
//        2、使用Stream的forEach方法遍历集合stream.forEach(s -> System.out.print(s + "  "));// 输出结果 :张三  李四  王五  赵六  田七  王八
//        3、如果在此使用该流会怎样?stream.filter(s -> s.startsWith("张"));
//        将抛出这个异常 : java.lang.IllegalStateException: stream has already been operated upon or closed}
}
  • filter()方法
package cn.com.cqucc.demo02.StreamMethods.Test02.StreamMethods;import java.util.stream.Stream;/*
*   Stream的filter()方法的使用
*       Stream<T> filter​(Predicate<? super T> predicate) 返回由与此给定谓词匹配的此流的元素组成的流。
*       参数 :
*           该方法的参数接收的是一个函数式接口,所以可以使用Lambda表达式
*       作用:进行元素的过滤
*
*       Stream流的特点 :1、属于管道流 只能被消费(使用)一次2、第一个Stream 流调用完毕方法数据就会流转到下一个Stream流上 此时第一个 Stream 已经使用完毕就会关闭了此时第一个stream流就不能调用方法类了我们的stream流只能使用一次
* */
public class Test02StreamFilter {public static void main(String[] args) {
//        创建一个流Stream<String> streamA = Stream.of("张三", "李四", "王五", "赵六", "田七", "王八");
//        我只需要姓 “张”的 所以 调用 Stream流的方法 filter进行过滤streamA.filter(s -> s.startsWith("张")).forEach(s -> System.out.println(s));// 输出结果 :张三//        注意Stream<String> streamB = Stream.of("小明", "李华", "王二");Stream<String> streamC = streamB.filter(s -> s.startsWith("李"));
//        streamB.forEach(s-> System.out.println(s));//此时在使用之前的流会抛出异常 IllegalStateExceptionstreamC.forEach(s -> System.out.println(s));// 输出结果 :李华}
}
  • map()方法
package cn.com.cqucc.demo02.StreamMethods.Test02.StreamMethods;import java.util.stream.Stream;/**     <R> Stream<R> map​(Function<? super T,? extends R> mapper) 返回由给定函数应用于此流的元素的结果组成的流。*              参数 :*                一个 函数式接口 Function ,可以将函数中T类型的数据类型转换为R类型的流*                可以将一种类型转换为另一种类型,就叫映射。*              作用:*                  map 映射 : 如果需要将流中的元素映射到另一个流中 , 就使用map方法* */
public class Test03StreamMap {public static void main(String[] args) {
//      需求 : 将字符串类型的整数转换为 Integer类型的整数Stream<String> stringStream = Stream.of("1", "2", "1", "3");Stream<Integer> integerStream = stringStream.map(s -> Integer.parseInt(s));integerStream.forEach(s -> System.out.println(s));}
}
  • count()方法
package cn.com.cqucc.demo02.StreamMethods.Test02.StreamMethods;import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;/**       Stream流中的方法 long count​() 返回此流中的元素数。**          作用:*               用于统计Stream流中元素的个数*          注意:*               count方法是一个终结方法,使用完它之后就不能在使用 Stream流中的其他方法** */
public class Test04StreamCount {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("张三");list.add("李四");list.add("王五");list.add("赵六");list.add("田七");list.add("王八");Stream<String> streamList = list.stream();
//        long count = streamList.count();long count = streamList.count();//调用它之后就不能再调用流中的其他方法了System.out.println(count);//6}
}
  • limit()方法
package cn.com.cqucc.demo02.StreamMethods.Test02.StreamMethods;import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;/**       Stream 方法中的 Stream<T> limit​(long maxSize) 返回由此流的元素组成的流,截短长度不能超过 maxSize 。*              参数:*                  参数是一个long类型的数据 如果 集合的长度大于 参数的长度 则进行截取 否则不进行任何操作*              作用:*                  limit方法可以对 流中的元素进行截取 只取前n个* */
public class Test06StreamLimit {public static void main(String[] args) {//        获取一个Stream流List<String> list = new ArrayList<>();list.add("张三");list.add("李四");list.add("王五");list.add("赵六");list.add("田七");Stream<String> stream = list.stream();
//        使用limit方法对stream流中的元素进行截取,只要前2个元素 并对流进行遍历stream.limit(2).forEach(s-> System.out.println(s));}
}
  • skip()方法
package cn.com.cqucc.demo02.StreamMethods.Test02.StreamMethods;import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;/**   Stream 方法中的 Stream<T> skip​(long n) 在丢弃流的第一个 n元素后,返回由该流的剩余元素组成的流。*           参数 :*               是一个long类型的数据*            作用:*               如果希望跳过前n个元素就是用Stream的skip方法 获取一个截取之后的流*               如果流的当前长度大于n,则跳过前n个否则的到一个长度为0的流。* */
public class Test06StreamSkip {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("张三");list.add("赵四");list.add("王五");list.add("赵六");list.add("田七");list.add("王八");Stream<String> stream = list.stream();stream.skip(3).forEach(s -> System.out.print(s + "  "));//输出结果:赵六  田七  王八}
}
  • concat方法
package cn.com.cqucc.demo02.StreamMethods.Test02.StreamMethods;import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;/**      Stream接口中的static <T> Stream<T> concat​(Stream<? extends T> a, Stream<? extends T> b)*          创建一个懒惰连接的流,其元素是第一个流的所有元素,后跟第二个流的所有元素。*         参数:*              两个流*         作用:*              如果你有两个流,你希望合并为一个流,那么就可以使用Stream流的静态方法concat* */
public class Test07StreamConcat {public static void main(String[] args) {List<String> listA = new ArrayList<>();listA.add("张三");listA.add("李四");listA.add("王五");listA.add("赵六");listA.add("田七");listA.add("王八");List<String> listB = new ArrayList<>();listB.add("小明");listB.add("张强");listB.add("李华");Stream<String> streamA = listA.stream();Stream<String> streamB = listB.stream();Stream<String> concatAB = Stream.concat(streamA, streamB);concatAB.forEach(s -> System.out.print(s + "   "));//张三   李四   王五   赵六   田七   王八   小明   张强   李华}
}

Java8新特性 Stream流式思想(三)相关推荐

  1. java8新特性stream流

    参考自深蓝至尊的Java8 新特性之流式数据处理 一. 流式处理简介 在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作变得简洁了许多,通常我们需要多行代码才能完成的操作,借助于流式 ...

  2. Java8新特性Stream流详解

    陈老老老板 说明:新的专栏,本专栏专门讲Java8新特性,把平时遇到的问题与Java8的写法进行总结,需要注意的地方都标红了,一起加油. 本文是介绍Java8新特性Stream流常用方法超详细教学 说 ...

  3. Java8 新特性之流式数据处理(转)

    转自:https://www.cnblogs.com/shenlanzhizun/p/6027042.html 一. 流式处理简介 在我接触到java8流式处理的时候,我的第一感觉是流式处理让集合操作 ...

  4. Java8新特性——Stream流:不同于IO流的流,操作集合数据

    文章目录 Stream流 1.认识Stream流(源码说明) 1.1.Stream流和Collection的区别 1.2.流的获取方式 1.3.流操作和管道 1.4.并行性 1.5.不干扰内政 1.6 ...

  5. 【Stream】java8新特性Stream流总结

    一.什么是stream 在 java8 中增加了一个新的抽象接口 Stream API,使用 Stream 操作集合类似于使用 SQL 语句数据库查找数据类似,提供直观的方法进行操作. Stream ...

  6. Java8新特性 Stream流常用方法

    Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达 ...

  7. Java8新特性stream流的优雅操作

    文章目录 原因是因为我管理的小组提交代码被我review到了,发现只有个别同学使用到了stream流,所以出此blog,希望大家都写出优雅的代码 原因是因为我管理的小组提交代码被我review到了,发 ...

  8. Java8新特性 stream流常用方法

    Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达 ...

  9. java8 新特性之流式数据处理_Java8新特性 - 集合流式编程 - 最终操作

    2.数据源的获取 2.1.数据源的简介 数据源,顾名思义,既是流中的数据的来源.是集合的流式编程的第一步,将数据源中的数据读取到流中,进行处理.注意:将数据读取到流中进行处理的时候,与数据源中的数据没 ...

  10. java8新特性 Stream流的优雅操作

    1. 使用传统的方式,遍历集合,对集合中的数据进行过滤 //创建一个List集合,存储姓名List<String> list = new ArrayList<>();list. ...

最新文章

  1. 华为交换机路由器常用命令
  2. 【Java8新特性】浅谈方法引用和构造器引用
  3. javascript 时钟代码 自动时间
  4. Windows客户机脱域问题及解决办法
  5. 我的Ubuntu9.10配置(随时更新)
  6. 【APICloud系列|3】开发APP对UI的一般性要求
  7. linux 提升cpu权限,CPUlimit有效防止Linux系统CPU过载
  8. 从SQL SERVER 2000到SQL SERVER 2005 视图中存在 ORDER BY 语句的完全解决方案
  9. 点到曲线的距离_如何从“圆锥”曲线到圆锥曲线
  10. 并发编程-Atomic的compareAndSet
  11. 用c语言实现strncmp,strncat,memset, memcmp
  12. [超详细] Apache网页优化:网页压缩与网页缓存超详细
  13. jetty 找不到html页面,记一次jetty 404问题排查修复
  14. 如何更改微信小程序二维码物料颜色
  15. 如何让计算机从固态硬盘启动不了,电脑设置固态硬盘启动的方法
  16. 你知道 DNS,那我猜你一定不知道 HTTPDNS
  17. excel提取工作表名称
  18. 短期趋势自用经传捕捞季节 通达信指标公式副图 源码 贴图
  19. 基于flowable的审批系统安装及部署
  20. 服务器开发- 牌和牌的基本操作

热门文章

  1. xman_2019_format(非栈上格式化字符串仅一次利用的爆破)
  2. PHP学习总结(二)
  3. C# wpf 自定义标题栏及无边框窗口
  4. Firefox的下载处理器:FlashGot v1.0 Final颁发
  5. viper4android资源分享,一步一步教你如何使4.42版本ROOT并且安装Viper4Android音效软件...
  6. 用Python做一只真·多足机器人,钢铁蜈蚣能弯曲还能蠕动
  7. 重言式判别 (数据结构课程设计)
  8. 普通人的第一个Linux发行版-安装Deepin20.5
  9. shell执行curl_Linux curl命令详解
  10. CURL 发送请求详解