java8 stream流操作
对集合进行Stream()转化:
创建操作:
list.stream() 为集合创建串行流。
list.parallelStream() 为集合创建并行流。
public void test() {List<String> list = new ArrayList<String>();//1.可以通过Collection系列集合提供的stream() 或 parallelStream()Stream<String> stream1 = list.stream();User[] users = new User[10];//2.通过Arrays中的静态方法stream() 获取数组流Stream<User> stream2 = Arrays.stream(users);//3.通过Stream类中的静态方法of()Stream<String> stream3 = Stream.of("aa","bb","cc");//4.创建无限流Stream<Integer> stream4 = Stream.iterate(0, (x) -> x + 2);stream3.forEach(System.out::println);stream4.limit(10).forEach(x -> System.out.println(x));}
中间操作
filter如果返回false则对元素进行过滤
list.stream().filter(s -> {return boolean;})
map可以对元素进行修改,不同类型的元素会有不同的处理方法
list.stream().map(Object::Method)
limit:截断流,使流元素不超过给定数量
list.stream().limit(int)
skip:跳过流,使流元素跳过前给定的数量
list.stream().skip(int)
distinct:去除重复,使相同的流元素只保留一个
list.stream().distinct()
sorted:排序,自定义排序如果返回值<0则交换位置,自然排序为降序
list.stream().sorted() …1.2.3
list.stream().sorted((a,b) -> {return b-a;}) …3.2.1
Match:查找与匹配
* allMatch:检查是否匹配所有元素
* anyMatch:检查是否至少匹配一个元素
* noneMatch:检查是否没有任何元素匹配
* findFirst:返回第一个元素
* findAny:返回当前流中的任意元素
* count:返回流中元素的总个数
* max:返回流中最大值
* min:返回流中最小值
/** 中间操作:(1.返回结果依然是流 2.中间操作是延迟的,遇到终结操作才会触发执行 3.中间操作是流水线形式的)* 筛选与切片* filter:接收流中的元素,从流中排除某些元素* limit:截断流,使元素不超过给定数量* skip(n): 跳过前n个元素,返回剩余的元素,若流中元素不足n个,则返回空流* distinct:筛选,通过流所生成元素的hashCode和equals去除重复元素* 映射:* map:接收lambda,将元素转换成其它形式或提取信息。接收一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素* flatMap:接收一个函数作为参数,将流中的每个值都换成另一个流,然后把所有流连城一个流* 排序:* sorted():自然排序(Comparable)* sorted(Comparator com):定制排序(Comparator)*///内部迭代:迭代操作部由Stream API完成
终结操作:
终结操作产生最终的结果。
forEach:遍历集合
list.stream().forEach()
collect:使用Collectors类中的方法来进行整合流为类型
list.stream().collect(Collectors.toList()) 转换成List集合
list.stream().collect(Collectors.groupingBy(User::getName))) 分组 Map<Name,List >
list.stream().collect(Collectors.partitioningBy( u -> u.getAge() > 24)) 按条件分组
list.stream().collect(Collectors.toCollection(HashSet::new)) 转换成HashSet集合 (注意元素类型)
1.forEach 和 forEachOrdered 对流中的每个元素执行由 Consumer 给定的实现。在使用 forEach 时,并没有确定的处理元素的顺序;forEachOrdered 则按照流的相遇顺序来处理元素,如果流有确定的相遇顺序的话。2.reduce进行递归计算3.collect生成新的数据结构4.......
java8 stream流操作相关推荐
- Java8 Stream流操作在用户系统中的妙用
在做目前这个项目的时候,发现以前有一个筛选的需求,老程序员是这么做的,先请求Http服务器得到一长串json数据,大概用A4纸打了40多页那么多,然后将这些对象写入到sqlite数据库中,再用数据库查 ...
- Java基础学习总结(132)——Java8 Stream流操作学习总结
传统的数据处理都是用循环来解决,而不是像搜索数据库那样有具体的搜索语句,而Java8的Stream提供了很好的方案,往往一行就搞定了,而且Stream还可以链式操作,一行代码实现多个循环的功能,代码风 ...
- java8 stream流操作集合交集,差集,并集,过滤,分组,去重,排序,聚合等
测试对象 public class Person {private String name;private Integer age;private Integer weight;public Pers ...
- Java8——Stream流操作List排序_List集合中每个对象元素按时间顺序排序
一个学生类的实体类 @Data public class Student {private Long id;private String name;private int age;private Do ...
- java8 Stream流【华为3面】
华为三面@java8 stream流操作面试题 前言:华为三面考了个很简单的基础编程,就是java8 Stream流操作,太久没写,也是没掌握好java基础直接搞得措手不及,stream两行代码的事情 ...
- 吃透JAVA的Stream流操作,多年实践总结
在JAVA中,涉及到对数组.Collection等集合类中的元素进行操作的时候,通常会通过循环的方式进行逐个处理,或者使用Stream的方式进行处理. 例如,现在有这么一个需求: 从给定句子中返回单词 ...
- Java8——Stream流
Java8--Stream流 Stream是数据渠道,用于操作集合.数组等生成的元素序列. Stream操作的三个步骤: 创建Stream 中间操作 终止操作 一.获取stream的四种方式 1.通过 ...
- java8 Stream流
目录 前言 一.stream的使用场景特点 特点: 二.初步体验一下stream 三.简单看一下Stream的常用API 3.1 forEach()遍历集合中的对象 3.2filter对流对象进行过滤 ...
- Java8 Stream 流的创建、筛选、映射、排序、归约、分组、聚合、提取与组合、收集、接合、foreach遍历
目录 一 了解Stream 1 Stream概述 那么什么是Stream? Stream可以由数组或集合创建 Stream有几个特性: Stream流的起始操作 2 Stream的创建----Str ...
- java8/Stream流式计算从入门到精通/函数式编程实战
摘要:Stream流式计算,本文讲解了Stream流式计算的概念,具体的使用步骤以及源码实现,最后讲解了使用Stream过程中需要注意的事项.Stream在公司项目中被频繁使用,在性能优化上具有广泛的 ...
最新文章
- Markdown的一些常用的语法
- Python Unicode与中文处理
- Java并发编程—Atomic原子类
- centos 关闭防火墙_CentOS7操作系统下如何关闭防火墙
- shell总结(0基础入门)
- windows linux 传文件_2种windows到linux上传文件的方法
- Word01-从正文处开始插入页码
- shell倒数第三位增加字符_shell中常用的变量处理、字符串操作(之三)
- java jpa 教程 查询_Spring Boot JPA 使用教程
- DXperience 8.2.3
- ibus五笔快捷键 繁简 单字 词组切换
- 【雕爷学编程】Arduino动手做(71)---红外遥控扩展模块
- 秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial
- 携程的供应链和流量逻辑|一点财经
- Chrome开发者工具,如何清除Cookies
- 广发信用卡联名南航,申卡这样操作
- 如何提取公众号文章中的音频
- MATLAB软件基础学习篇——003
- 微信小程序中动态添加删除class类名 使用三元表达式动态设置标签的class名
- python 读取csv文件转成字符串,python实现csv格式文件转为asc格式文件的方法