java8新特性——Stream
2021-02-18 03:21
标签:集合 sort n个元素 返回 第一个 any 接口 收集 compare 一.stream介绍 stream(流)是一个来自数据源的元素队列 集合讲的是数据,而流讲的是计算 注意: ①stream自己不会存储元素 ②stream不会改变源对象,相反他会返回一个持有结果的新stream ③stream操作是延时执行的,这意味着他们会等到需要结果的时候才执行 stream操作的三个步骤 ①创建stream ②中间操作 ③终止操作 每当终止语句执行后,这个流就会关闭 java8新特性——Stream 标签:集合 sort n个元素 返回 第一个 any 接口 收集 compare 原文地址:https://www.cnblogs.com/licha233/p/12693244.html //1.通过Collection 系列集合提供的stream()[串行流]或 [并行流]来生成流
List list = new ArrayList();
Stream stream = list.stream();
//2.通过Arrays中的静态方法stream()获取数据流
String[] arr = new String[10];
Stream
List list = List.of("aa","bb","cc","aa");
//1.filter 排除某些元素
// 将内容为"aa"的元素排除
list.stream().filter( (str)-> !str.equals("aa")).forEach(System.out::println);
//2.limit 截断流,使其元素不超过给定数量
// 取两个元素
list.stream().limit(2).forEach(System.out::println);
//3.skip 跳过元素,返回一个扔掉了前n个元素的流
// 跳过两个元素
list.stream().skip(2).forEach(System.out::println);
//4.distinct 筛选,通过流生成元素的hashCode()和equals()去除重复元素
list.stream().distinct().forEach(System.out::println);
//5.map 映射,将元素转换成其他形式或提取信息。接受一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素
//将流中的元素全部转换成大写
Stream
> list02 = new ArrayList();
list02.add(list);
list02.add(list);
/**
* 现在list里的数据为[ ["aa","bb","cc","aa"],["aa","bb","cc","aa"] ]
* 如果用map映射的话 stream流里的结构是 { {"aa","bb","cc","aa"},{"aa","bb","cc","aa"} }的
* 如果用flatmap映射的话 stream流里的结构就是 {"aa","bb","cc","aa","aa","bb","cc","aa" }的
*/
Stream
> stringStream = list02.stream();
stringStream.map((lst) -> lst.stream().map((str) -> str.toUpperCase()));
/**
* 7.排序
* sorted() 自然排序,就是用Comparable的方式取排
* sorted(Comparator com) 自定义排序
*/
//自然排序
List list03 = List.of("hh","b","cccc","aaa");
list03.stream().sorted().forEach(System.out::println);
//结果: aaa b cccc hh
//自定义按照长度排序
Stream
/**
* allMatch 检查是否所有元素都符合匹配条件
* anyMatch 检查是否至少有一个元素符合匹配条件
* noneMatch 检查是否没有元素匹配条件
* findFirst 返回第一个元素
* findAny 返回当前流中的任意元素
* count 返回流中元素的个数
* max 返回流中最大值
* min 返回流中最小值
* reduce(T identity,BinaryOperator) /reduce(BinaryOperator) 将流中元素反复结合起来,得到一个值
* collect 收集,将流转换为其他形式,接收一个Conllector接口的实现,用于给stream中元素做汇总的方法
*/
//allMatch,anyMatch,noneMatch
List list = List.of("aa","bbb","c","dddd");
Stream