集合对象.stream() 获取流对象,对元素批处理(不改变原集合)

集合元素循环除了用for循环取出,还有更优雅的方式.forEach

示例List集合获取Stream对象进行元素批处理

  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. /**
  5. * @ClassName ArrayListStreamExample
  6. * @projectName: object1
  7. * @author: Zhangmingda
  8. * @description: XXX
  9. * date: 2021/4/11.
  10. */
  11. public class ArrayListStreamExample {
  12. public static void main(String[] args) {
  13. List<String> persons = new ArrayList<>();
  14. persons.add("李一桐");
  15. persons.add("刘亦菲");
  16. persons.add("鞠婧祎");
  17. persons.add("李易峰");
  18. persons.add("李纯");
  19. persons.add("李小璐");
  20. persons.add("李健");
  21. persons.add("李连杰");
  22. //
  23. persons.stream().filter(o -> o.startsWith("李")).filter(o -> o.length() >=3).forEach(System.out::println);
  24. List<String> liPerson = new ArrayList<>();
  25. persons.stream().filter(o -> o.startsWith("李")).filter(o -> o.length() >=3).forEach(o -> liPerson.add(o));
  26. System.out.println(liPerson); // [李一桐, 李易峰, 李小璐, 李连杰]
  27. }
  28. }

常用方法:

Map映射

如果需要将流中的元素映射到另一个流中,可以使用 map 方法。
  1. <R> Stream<R> map(Function<? super T, ? extends R> mapper)
Function是一个函数式接口,他有一个R apply(T t);方法,可以把T对象转化成R对象。这个就叫做映射。
  • 统计个数Count
  • 获取前几个Limit
  • 跳过前几个Skip
  • 组合concat
  • 最大最小值
    常用方法示例代码:
    1. import java.util.stream.Stream;
    2.  
    3. /**
    4. * @ClassName StreamFuncExample
    5. * @projectName: object1
    6. * @author: Zhangmingda
    7. * @description: XXX
    8. * date: 2021/4/12.
    9. */
    10. public class StreamFuncExample {
    11. public static void main(String[] args) {
    12. Stream.of(1,2,3).map(num ->num *2).forEach(System.out::println); //映射输出2、4、6
    13. long count = Stream.of(1,3,4,5).count(); //统计个数
    14. System.out.println(count);
    15. Stream.of(1,2,3,4,5,6).limit(3).forEach(System.out::println);//前三个
    16. Stream.of(1,2,3,4,5,6).skip(3).forEach(System.out::println);//跳过前三个
    17. Stream<Integer> num = Stream.of(1,2,3);
    18. Stream<String> person = Stream.of("张三","李四","王五");
    19. Stream allStream = Stream.concat(num,person);
    20. allStream.forEach(System.out::println); //1,2,3, 张三","李四","王五"
    21. int max = Stream.of(1,2,3,4,5,6).max((num1, num2) -> num1 - num2).get(); //取最大
    22. System.out.println(max); //6
    23. }
    24. }
 

Stream对象转换为集合

collect(Collectors.toList())  

collect(Collectors.toSet())

collect(Collectors.toMap())

  1. public class StreamCollectCollectorsXXX {
  2. public static void main(String[] args) {
  3. Stream<String> persons = Stream.of("张三","李四","王五");
  4. // List<String> personList = persons.collect(Collectors.toList());
  5. // Set<String> personSet = persons.collect(Collectors.toSet());
  6. Map<String,Integer> personMap = persons.collect(Collectors.toMap( K ->K, K ->K.length()));
  7. System.out.println(personMap);
  8. }
  9. }

java 数据类型:Stream流 对象转换为集合collect(Collectors.toList()) ;常用方法count,limit,skip,concat,max,min的更多相关文章

  1. Java的Stream流式操作

    前言 最近在实习,在公司看到前辈的一些代码,发现有很多值得我学习的地方,其中有一部分就是对集合使用Stream流式操作,觉得很优美且方便.所以学习一下Stream流,在这里记录一下. Stream是什 ...

  2. Java中Stream流相关介绍

    什么是Stream? Stream是JDK8 API的新成员,它允许以声明性方式处理数据集合 特点 代码简洁: 函数式编程写出的代码简洁且意图明确,使用stream接口让你从此告别for循环 多核友好 ...

  3. Java 8 Stream流编程学习

    本文是自己学习菜鸟教程中总结的笔记,用于快速找代码,完整的文档见菜鸟教程:Java 8 Stream Stream 使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达 ...

  4. Java_lambda表达式之"stream流学习,Map学习,collect学习,Conllectors工具类学习"

    Lambda表达式学习 对List<Integer> userIdList = UserList.stream().map(User::getUserId).collect(Collect ...

  5. 简洁方便的集合处理——Java 8 stream流

    背景 java 8已经发行好几年了,前段时间java 12也已经问世,但平时的工作中,很多项目的环境还停留在java1.7中.而且java8的很多新特性都是革命性的,比如各种集合的优化.lambda表 ...

  6. 获取单列集合,双列集合,数组的Stream流对象以及简单操作

    获取流对象 获取单列集合,双列集合,数组的流对象 单列集合获取流对象: 1.java.util.Collection接口中加入了default方法stream()获取流对象,因此其所有实现类均可通过此 ...

  7. java基础-IO流对象之Properties集合

    java基础-IO流对象之Properties集合 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Properties集合的特点 Properties类表示了一个持久的属性集. ...

  8. Java基础-IO流对象之字节流(Stream)

    Java基础-IO流对象之字节流(Stream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在前面我分享的笔记中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现 ...

  9. 【重学Java】Stream流

    Stream流 体验Stream流[理解] 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素 把集合中所有以"张"开头的元素存储到一个新的集合 把&q ...

随机推荐

  1. MYSQL免安装

    MYSQL免安装 本文使用mysql 8.0.22进行演示 一.MYSQL 下载 [x] 官网下载:地址:https://dev.mysql.com/downloads/mysql/ [x] 百度云盘 ...

  2. 【R】clusterProfiler的GO/KEGG富集分析用法小结

    前言 关于clusterProfiler这个R包就不介绍了,网红教授宣传得很成功,功能也比较强大,主要是做GO和KEGG的功能富集及其可视化.简单总结下用法,以后用时可直接找来用. 首先考虑一个问题: ...

  3. halt

    halt命令用来关闭正在运行的Linux操作系统.halt命令会先检测系统的runlevel,若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统. 语法 halt(选项) 选 ...

  4. Notepad++—英文版卡框架翻译

    用到了,就积累到这里,不急一时,慢慢沉淀. 一.File 二.Edit 三.Search 四.View视图 Always on top  #总在最前 Toggle full screen mode  ...

  5. 给lua_close实现回调函数

    先讲下为什么会需要lua_close回调吧. 我用C++给lua写过不少库,其中有一些,是C++依赖堆内存,并且是每一个lua对象使用一块单独的内存来使用的. 在之前,我一直都是魔改lua源代码,给l ...

  6. 学习java的第十一天

    一.今日收获 1.学习java完全学习手册2.9.3循环结构的内容并验证例题 2.观看哔哩哔哩上的教学视频 二.今日问题 1.基本没有 三.明日目标 1.继续完成2.9.3循环结构的例题 2.哔哩哔哩 ...

  7. 面对大规模 K8s 集群,这款诊断利器必须要“粉一波”!

    作者|段超 来源|尔达 Erda 公众号 背景 我们是一家做商业软件的公司,从一开始我们就把软件交付流程做的非常标准且简单,所有的软件都是基于我们的企业数字化平台 Erda(现已开源)来交付,底层基于 ...

  8. keybd_event模拟键盘按键,mouse_event怎么用

    从 模仿UP主,用Python实现一个弹幕控制的直播间! - 蛮三刀酱 - 博客园 (cnblogs.com) 知道了 PyAutoGUI: * Moving the mouse and clicki ...

  9. Java偏向锁浅析

    偏向锁的定义 顾名思义,偏向锁会偏向第一个访问锁的线程. 如果在接下来的运行过程中,该锁没有被其他线程访问,这持有偏向锁的线程将永远不需要同步 如果在运行过程中,遇到了其他线程抢占锁,则持有偏向锁的线 ...

  10. promise.all的应用场景举例

    Promise.all方法 简而言之:Promise.all( ).then( )适用于处理多个异步任务,且所有的异步任务都得到结果时的情况. 比如:用户点击按钮,会弹出一个弹出对话框,对话框中有两部 ...