对集合进行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流操作相关推荐

  1. Java8 Stream流操作在用户系统中的妙用

    在做目前这个项目的时候,发现以前有一个筛选的需求,老程序员是这么做的,先请求Http服务器得到一长串json数据,大概用A4纸打了40多页那么多,然后将这些对象写入到sqlite数据库中,再用数据库查 ...

  2. Java基础学习总结(132)——Java8 Stream流操作学习总结

    传统的数据处理都是用循环来解决,而不是像搜索数据库那样有具体的搜索语句,而Java8的Stream提供了很好的方案,往往一行就搞定了,而且Stream还可以链式操作,一行代码实现多个循环的功能,代码风 ...

  3. java8 stream流操作集合交集,差集,并集,过滤,分组,去重,排序,聚合等

    测试对象 public class Person {private String name;private Integer age;private Integer weight;public Pers ...

  4. Java8——Stream流操作List排序_List集合中每个对象元素按时间顺序排序

    一个学生类的实体类 @Data public class Student {private Long id;private String name;private int age;private Do ...

  5. java8 Stream流【华为3面】

    华为三面@java8 stream流操作面试题 前言:华为三面考了个很简单的基础编程,就是java8 Stream流操作,太久没写,也是没掌握好java基础直接搞得措手不及,stream两行代码的事情 ...

  6. 吃透JAVA的Stream流操作,多年实践总结

    在JAVA中,涉及到对数组.Collection等集合类中的元素进行操作的时候,通常会通过循环的方式进行逐个处理,或者使用Stream的方式进行处理. 例如,现在有这么一个需求: 从给定句子中返回单词 ...

  7. Java8——Stream流

    Java8--Stream流 Stream是数据渠道,用于操作集合.数组等生成的元素序列. Stream操作的三个步骤: 创建Stream 中间操作 终止操作 一.获取stream的四种方式 1.通过 ...

  8. java8 Stream流

    目录 前言 一.stream的使用场景特点 特点: 二.初步体验一下stream 三.简单看一下Stream的常用API 3.1 forEach()遍历集合中的对象 3.2filter对流对象进行过滤 ...

  9. Java8 Stream 流的创建、筛选、映射、排序、归约、分组、聚合、提取与组合、收集、接合、foreach遍历

    目录 一  了解Stream 1 Stream概述 那么什么是Stream? Stream可以由数组或集合创建 Stream有几个特性: Stream流的起始操作 2 Stream的创建----Str ...

  10. java8/Stream流式计算从入门到精通/函数式编程实战

    摘要:Stream流式计算,本文讲解了Stream流式计算的概念,具体的使用步骤以及源码实现,最后讲解了使用Stream过程中需要注意的事项.Stream在公司项目中被频繁使用,在性能优化上具有广泛的 ...

最新文章

  1. Markdown的一些常用的语法
  2. Python Unicode与中文处理
  3. Java并发编程—Atomic原子类
  4. centos 关闭防火墙_CentOS7操作系统下如何关闭防火墙
  5. shell总结(0基础入门)
  6. windows linux 传文件_2种windows到linux上传文件的方法
  7. Word01-从正文处开始插入页码
  8. shell倒数第三位增加字符_shell中常用的变量处理、字符串操作(之三)
  9. java jpa 教程 查询_Spring Boot JPA 使用教程
  10. DXperience 8.2.3
  11. ibus五笔快捷键 繁简 单字 词组切换
  12. 【雕爷学编程】Arduino动手做(71)---红外遥控扩展模块
  13. 秒懂!何凯明的深度残差网络PPT是这样的|ICML2016 tutorial
  14. 携程的供应链和流量逻辑|一点财经
  15. Chrome开发者工具,如何清除Cookies
  16. 广发信用卡联名南航,申卡这样操作
  17. 如何提取公众号文章中的音频
  18. MATLAB软件基础学习篇——003
  19. 微信小程序中动态添加删除class类名 使用三元表达式动态设置标签的class名
  20. python 读取csv文件转成字符串,python实现csv格式文件转为asc格式文件的方法

热门文章

  1. Java编程:弗洛伊德算法(无向图所有顶点最小路径)
  2. Cesium:添加按钮与原生按钮样式相同
  3. SQL:postgresql增加自增字段
  4. Pannellum:实例之自动加载全景图
  5. 简单比较init-method,afterPropertiesSet和BeanPostProcessor
  6. python3将seq文件转化为avi
  7. Mac Os的java开发环境以及MySql环境配置
  8. 图像3A算法及伽马校正原理及部分实现
  9. spring实战第五版总结
  10. 初涉网络流[EKdinic]