JDK8 新特性Stream流的常用方法
流表示包含着一系列元素的集合,我们可以对其做不同类型的操作,用来对这些元素执行计算
二.中间流的部分应用
中间操作会再次返回一个流,所以,我们可以链接多个中间操作,注意这里是不用加分号的。
/*
Stream流中间操作方法- 概念中间操作的意思是,执行完此方法之后,Stream流依然可以继续执行其他操作。
- 常见方法方法名 说明Stream<T> filter(Predicate predicate) 用于对流中的数据进行过滤Stream<T> limit(long maxSize) 返回此流中的元素组成的流,截取前指定参数个数的数据Stream<T> skip(long n) 跳过指定参数个数的数据,返回由该流的剩余元素组成的流static <T> Stream<T> concat(Stream a, Stream b) 合并a和b两个流为一个流Stream<T> distinct() 返回由该流的不同元素(根据Object.equals(Object) )组成的流Stream<T> sorted() 返回由此流的元素组成的流,根据自然顺序排序Stream<T> sorted(Comparator comparator) 返回由该流的元素组成的流,根据提供的Comparator进行排序<R> Stream<R> map(Function mapper) 返回由给定函数应用于此流的元素的结果组成的流IntStream mapToInt(ToIntFunction mapper) 返回一个IntStream其中包含将给定函数应用于此流的元素的结果*/
public class StreamDemo {public static void main( String[] args ) {List<String> list = new ArrayList<>();list.add("孙悟空");list.add("齐天大圣");list.add("孙悟能");list.add("孙源");list.add("王孙");System.out.println("-----------Stream<T> filter(Predicate predicate)----------------");/*Stream<T> filter(Predicate predicate) 用于对流中的数据进行过滤Predicate接口:表示一个参数的谓词(布尔值函数)。startsWith : String类中的方法;包含的意思*/list.stream().filter(s -> s.startsWith("孙")).forEach(System.out::println);//结果: 孙悟空 孙悟 孙源System.out.println("-------------- Stream<T> limit(long maxSize) ------------------");/*Stream<T> limit(long maxSize) 返回此流中的元素组成的流,截取前指定参数个数的数据*/list.stream().limit(3).forEach(s -> System.out.println(s));//截取制定 的参数: 孙悟空 齐天大圣 孙悟能System.out.println("---------------static <T> Stream<T> concat(Stream a, Stream b)-----------------");// Stream<T> skip(long n) 跳过指定参数个数的数据,返回由该流的剩余元素组成的流// list.stream().skip(2).forEach(System.out::println);//取2以后的所有参数 结果:孙悟能 孙源 王孙//static <T> Stream<T> concat(Stream a, Stream b) 合并a和b两个流为一个流Stream<String> limit = list.stream().limit(3);Stream<String> skip = list.stream().skip(3);Stream.concat(limit, skip).forEach(System.out::print); //孙悟空 齐天大圣 孙悟能 孙源 王孙//Stream<T> distinct() 返回由该流的不同元素(根据Object.equals(Object) )组成的流Stream.concat(list.stream().limit(3), list.stream().skip(2)).distinct().forEach(System.out::println);//去掉了孙悟能这个名字: 孙悟空 齐天大圣 孙悟能 孙源 王孙System.out.println("-------Stream<T> sorted() -----------");//Stream<T> sorted() 返回由此流的元素组成的流,根据自然顺序排序list.stream().sorted().forEach(System.out::println);System.out.println("-------------Stream<T> sorted(Comparator comparator)--------------------");//Stream<T> sorted(Comparator comparator) 返回由该流的元素组成的流,根据提供的Comparator进行排序list.stream().sorted((s1,s2)->s1.length()-s2.length()).forEach(System.out::println);//根据长度自定义排序System.out.println("---------Stream<R> map(Function mapper) -------------");//<R> Stream<R> map(Function mapper) 返回由给定函数应用于此流的元素的结果组成的流list.stream().map(s -> s).forEach(System.out::println);//将String转换为StringSystem.out.println("-----------IntStream mapToInt(ToIntFunction mapper)------------------");//IntStream mapToInt(ToIntFunction mapper) 返回一个IntStream其中包含将给定函数应用于此流的元素的结果//跟map性质是一样的, 另有一个Integer求和功能sumList<Integer> list1 = new ArrayList<>();list1.add(100);list1.add(111);list1.add(211);list1.add(311);int sum = list1.stream().mapToInt(s -> s).sum();//求数组的和System.out.println("数组和: "+sum);System.out.println("-------------------求平均值----------------------");list1.stream().mapToInt(s -> s)//将s转换为s.average()//求平均值.ifPresent(System.out::println);//值不为空输出System.out.println("-----------------------Optional<T> findFirst\u200B() 返回Optional描述此流的第一个元素,或空Optional如果流是空的。----------------------------");//Optional<T> findFirst() 返回Optional描述此流的第一个元素,或空Optional如果流是空的。list1.stream().findFirst().ifPresent(System.out::println);}}
结果:
孙悟空
孙悟能
孙源
-------------- Stream<T> limit(long maxSize) ------------------
孙悟空
齐天大圣
孙悟能
---------------static <T> Stream<T> concat(Stream a, Stream b)-----------------
孙悟空齐天大圣孙悟能孙源王孙孙悟空
齐天大圣
孙悟能
孙源
王孙
-------Stream<T> sorted() -----------
孙悟空
孙悟能
孙源
王孙
齐天大圣
-------------Stream<T> sorted(Comparator comparator)--------------------
孙源
王孙
孙悟空
孙悟能
齐天大圣
---------Stream<R> map(Function mapper) -------------
孙悟空
齐天大圣
孙悟能
孙源
王孙-----------IntStream mapToInt(ToIntFunction mapper)------------------
数组和: 733-------------------求平均值----------------------
183.25-----------------------Optional<T> findFirst() 返回Optional描述此流的第一个元素,或空Optional如果流是空的。----------------------------
100
Stream流终结操作方法
终端操作是对流操作的一个结束动作,一般返回 void 或者一个非流的结果。
import java.util.ArrayList;
import java.util.List;/*
Stream流终结操作方法【应用】- 概念终结操作的意思是,执行完此方法之后,Stream流将不能再执行其他操作。
- 常见方法方法名 说明void forEach(Consumer action) 对此流的每个元素执行操作long count() 返回此流中的元素数*/
public class StreamDemo1 {public static void main( String[] args ) {List<String> arr = new ArrayList<>();arr.add("大圣");arr.add("齐天大圣");arr.add("大圣2");arr.add("大圣3");System.out.println("---------------void forEach(Consumer action)\t对此流的每个元素执行操作---------------");arr.stream().forEach(System.out::println);System.out.println("--------------------long count() \t返回此流中的元素数-----------------------");long count = arr.stream().filter(s -> s.startsWith("大")).count();System.out.println(count);//返回第一个字包含大的有几个名字}}
JDK8 新特性Stream流的常用方法相关推荐
- stream流_最详细的JDK8新特性————Stream流
Stream流 在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊 端. 传统集合的多步遍历代码: 几乎所有的集合(如Collect ...
- Java JDK8新特性Stream流
1.Stream流 1. 流,支持处理数据处理操作的源生成的元素序列.流有两个重要特性:1流水线:很多流操作本身会返回一个流,这样多的操作就可以链接起来,形成一个大的流水线.2,内部迭代.流的迭代是在 ...
- JDK8新特性Stream流使用详解
Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据. Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达 ...
- Java复习第11天---11.4---Java8新特性---Stream流常用方法3和综合案例
Java复习第11天---11.4---Java8新特性---Stream流常用方法3和综合案例 目录 文章目录 1.count:计数-终结方法 2.limit:取前几个元素-延迟方法 3.skip: ...
- Java复习第11天---11.3---Java8新特性---Stream流特点和常用方法2
Java复习第11天---11.3---Java8新特性---Stream流特点和常用方法2 目录 文章目录 1.Stream流特点 2.filter:过滤 3.map:映射 ***后记*** : 内 ...
- Java复习第11天---11.2---Java8新特性---Stream流获取方式和常用方法1
Java复习第11天---11.2---Java8新特性---Stream流获取方式和常用方法1 目录 文章目录 1.Stream流的2中获取方式 1.1.集合的stream方法 1.2.Stream ...
- java的collect用法_java8新特性:stream流中collect用法
java8新特性:stream流中collect用法 java8新特性:stream流中collect用法 1.toList List collectList = Stream.of(1, 2, 3, ...
- Java8新特性Stream流详解
陈老老老板 说明:新的专栏,本专栏专门讲Java8新特性,把平时遇到的问题与Java8的写法进行总结,需要注意的地方都标红了,一起加油. 本文是介绍Java8新特性Stream流常用方法超详细教学 说 ...
- jdk8新特性Stream基础了解
Java 8 Stream API 基础了解 1.Stream概念 2.数据源 3.中间操作 4.最终操作 5.Stream使用注意事项 1.java.util.stream.Stream概念 *Ja ...
最新文章
- 狄利克雷卷积莫比乌斯反演证明
- 初等代数(3):代数方程、指数与对数、复数
- 运行python嵌入式要求_在嵌入式IPython实例中运行配置文件启动文件
- C# 中关于汉字与16进制转换的代码
- 如何提升数据安全治理能力
- L1-049 天梯赛座位分配(模拟)
- JavaWeb案例(MVC+MySQL+分页功能)+前后端分离
- postman自动化测试
- 【转】win7旗舰版英文版下载(64位|32位)|Windows7英文版ISO镜像
- 华为2019网络挑战赛初赛网络方向部分模拟题及答案
- 蜜罐 计算机术语,检测虚机和蜜罐方法的概念 -电脑资料
- html 播放视调用本地播放器,用HTML5做一个本地视频播放器
- 网页番茄钟(Pomodoro timer)
- 计算机的手机储存在哪里,手机wps文件保存在哪里?
- 东方梅酒:梅见的新国饮故事
- JAVA工具类(17)--Java导入导出Excel工具类ExcelUtil
- 笔记本故障:输入密钥界面没有文字
- CTF_Misc_【BUUCTF】 杂项——二维码Code
- 美国B2签证申请要准备哪些材料?
- 数据挖掘实战分享:财政收入影响因素分析及预测(四)