jdk1.8 -- stream 的使用
Posted mrrightzhao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jdk1.8 -- stream 的使用相关的知识,希望对你有一定的参考价值。
一.stream介绍
stream 是jdk 一个加强的api操作,翻译过来就是流的意思,主要是对Collection 集合的一些操作,流一但生成就会有方向性,类似于自来水管的水流一样,不可以重复使用。
stream 中的操作有filter map limt sorted collect
二.生成stream的方式
集合.stream(); − 为集合创建串行流
集合.parallelStream() − 为集合创建并行流
三.stream中的操作
1.filter 操作
public class StreamTest { public static void main(String[] args) { List<Apple> apples =Arrays.asList( new Apple("green", 150),new Apple("red", 170),new Apple("yellow", 190), new Apple("blue", 210)); //filter 操作是将流按自定义条件进行过虑 返回过虑后符合规则的stream Stream<Apple> filter = apples.stream().filter(a -> a.getWeight()>200); } }
2.map操作
public class StreamTest { public static void main(String[] args) { List<Apple> apples =Arrays.asList( new Apple("green", 150),new Apple("red", 170),new Apple("yellow", 190), new Apple("blue", 210)); //map 操作是将stream 通过map操作返回符合map规则的stream
// map 与filter 的区别
// map是一个Function 即传和一个 T 返回一个 R 类似于get操作 如果流中有元素符合map的操作条件,注会将得到的R存入到stream中,会改变流中存储的元素
// filter 是一个 Predicate 即传入一个 T 返回的是bollean 是用来做判断的,如果流中的某个元素符合filter的条件,就会存入到stream中,不符合的将被过滤掉
Stream<String> map = apples.stream().map(Apple::getColor); } }
3.limt
public class StreamTest { public static void main(String[] args) { List<Apple> apples =Arrays.asList( new Apple("green", 150),new Apple("red", 170),new Apple("yellow", 190), new Apple("blue", 210)); //取流中多少个元素 Stream<Apple> limit = apples.stream().limit(2); } }
4.sort collect
public class StreamTest { public static void main(String[] args) { List<Apple> apples =Arrays.asList( new Apple("green", 150),new Apple("red", 170),new Apple("yellow", 190), new Apple("blue", 210)); //sorted 是按颜色的字母顺序来排序
//collect 是将流转换成相对应的集合
List<Apple> collect = apples.stream().sorted(Comparator.comparing(Apple::getColor)).collect(Collectors.toList()); } }
四.stream 的并行操作
将集合转换成并行流后之后,其它操作与串行流相同
并行流可以通过将程序休眠,通过jconsole 工具查看
以上是关于jdk1.8 -- stream 的使用的主要内容,如果未能解决你的问题,请参考以下文章