stream流的使用

 @org.junit.Test//Stream API代替for循环//过滤字母并且排序public void test1() {List<String> nameStrs = Arrays.asList("Monkey", "Lion", "Giraffe", "Lemur");/**   sorted() 默认自然排序(根据0-9或者a-z)*/List<String> list = nameStrs.stream().filter(s -> s.startsWith("L")).map(String::toUpperCase).sorted().collect(toList());System.out.println(list);//结果   [LEMUR, LION]}@org.junit.Test//使用流的过滤//filter传入了lambda表达式public void test2() {Employee e1 = new Employee(1, 23, "M", "Rick", "Beethovan");Employee e2 = new Employee(2, 13, "F", "Martina", "Hengis");Employee e3 = new Employee(3, 43, "M", "Ricky", "Martin");Employee e4 = new Employee(4, 26, "M", "Jon", "Lowman");List<Employee> employees = Arrays.asList(e1, e2, e3, e4);//.filter(e -> e.getAge() > 70 && e.getGender().equals("M"))也可以如下写//Predicate<Employee > predicate = user -> user.getAge() > 70&& user.getGender().equals("M");//.filter(predicate)List<Employee> filtered = employees.stream().filter(e -> e.getAge() > 70 && e.getGender().equals("M")).collect(Collectors.toList());System.out.println(employees);System.out.println("------------------------");System.out.println(filtered);}@org.junit.Test//Stream管道流的map操作//所以map函数的作用就是针对管道流中的每一个数据元素进行转换操作。public void test3() {List<String> alpha = Arrays.asList("Monkey", "Lion", "Giraffe", "Lemur");//不使用Stream管道流List<String> alphaUpper = new ArrayList<>();for (String s : alpha) {alphaUpper.add(s.toUpperCase());}System.out.println(alphaUpper); //[MONKEY, LION, GIRAFFE, LEMUR]// 使用Stream管道流List<String> collect = alpha.stream().map(String::toUpperCase).collect(Collectors.toList());//上面使用了方法引用,和下面的lambda表达式语法效果是一样的//List<String> collect = alpha.stream().map(s -> s.toUpperCase()).collect(Collectors.toList());System.out.println(collect); //[MONKEY, LION, GIRAFFE, LEMUR]}@org.junit.Test//map()函数不仅可以处理数据,还可以转换数据的类型public void test4(){Employee e1 = new Employee(1,23,"M","Rick","Beethovan");Employee e2 = new Employee(2,13,"F","Martina","Hengis");Employee e3 = new Employee(3,43,"M","Ricky","Martin");Employee e4 = new Employee(4,26,"M","Jon","Lowman");List<Employee> employees = Arrays.asList(e1, e2, e3, e4);/*List<Employee> maped = employees.stream().map(e -> {e.setAge(e.getAge() + 1);//三元表达式e.setGender(e.getGender().equals("M")?"male":"female");//这里一定要加returnreturn e;}).collect(Collectors.toList());*///由于map的参数e就是返回值,所以可以用peek函数。// peek函数是一种特殊的map函数,当函数没有返回值或者参数就是返回值的时候可以使用peek函数。List<Employee> maped = employees.stream().peek(e -> {e.setAge(e.getAge() + 1);e.setGender(e.getGender().equals("M")?"male":"female");}).collect(Collectors.toList());System.out.println(maped);}

排序

@org.junit.Testpublic void test6() {List<Integer> list = Arrays.asList(1,3,2,5,6,4);//取最大值System.out.println(list.stream().max(Integer::compareTo).get());//取最小值System.out.println(list.stream().min(Integer::compareTo).get());//降序排列list.stream().sorted(Comparator.reverseOrder()).forEach(x -> {System.out.println(x);});}//类型的转换List<User2> users = new ArrayList();users.add(new User2(2L, "dd2", "322"));users.add(new User2(3L, "dd3", "322"));users.add(new User2(4L, "dd4", "322"));users.add(new User2(5L, "dd5", "322"));List<HashMap> downData = users.stream().map(x -> new HashMap() {{put("校验结果", x.toString());}}).collect(Collectors.toList());//System.out.println(downData);List<Map<String, Object>> collect = users.stream().map(y -> new HashMap<String, Object>() {{put("名字", y.getUsername());put("面膜", y.getPass());}}).collect(Collectors.toList());System.out.println(collect);

stream流的使用相关推荐

  1. stream流对象的理解及使用

    我的理解:用stream流式处理数据,将数据用一个一个方法去 . (点,即调用) 得到新的数据结果,可以一步达成. 有多种方式生成 Stream Source: 从 Collection 和数组 Co ...

  2. Cuda Stream流 分析

    Cuda Stream流分析 Stream 一般来说,cuda c并行性表现在下面两个层面上: • Kernel level • Grid level Stream和event简介 Cuda stre ...

  3. CUDA 7 Stream流简化并发性

    CUDA 7 Stream流简化并发性 异构计算是指高效地使用系统中的所有处理器,包括 CPU 和 GPU .为此,应用程序必须在多个处理器上并发执行函数. CUDA 应用程序通过在 streams ...

  4. Java8中Stream流对集合操作

    java8中Stream流引入函数式编程思想,主要配合各种接口.lambda表达式.方法引用等方式,为集合的遍历.过滤.映射等提供非常"优雅"的操作方式. Student.java ...

  5. Java8 Stream流递归,几行代码搞定遍历树形结构

    欢迎关注方志朋的博客,回复"666"获面试宝典 可能平常会遇到一些需求,比如构建菜单,构建树形结构,数据库一般就使用父id来表示,为了降低数据库的查询压力,我们可以使用Java8中 ...

  6. 【Java8新特性】面试官问我:Java8中创建Stream流有哪几种方式?

    写在前面 先说点题外话:不少读者工作几年后,仍然在使用Java7之前版本的方法,对于Java8版本的新特性,甚至是Java7的新特性几乎没有接触过.真心想对这些读者说:你真的需要了解下Java8甚至以 ...

  7. 10.Stream流

    一.Stream流 1.案例实现 按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素 把集合中所有以"张"开头的元素存储到一个新的集合 把"张" ...

  8. JDK8新特性之Stream流

    是什么是Stream流 java.util.stream.Stream Stream流和传统的IO流,它们都叫流,却是两个完全不一样的概念和东西. 流可以简单的说是处理数据集合的东西,可以申明式流式A ...

  9. list转map stream_advancedday10可变参数不可变集合及Stream流

    可变参数 可变参数指的是,方法参数的个数可以发生改变.但是其本质是一个数组,在方法把可变参数当做数组来使用就可以了. //可变参数的格式:数据类型...参数名public static void 方法 ...

  10. Java 8 - Stream流骚操作解读2_归约操作

    文章目录 Pre 什么是归约操作 元素求和 reduce reduce如何运行的 最大值和最小值 Pre Java 8 - Stream流骚操作解读见到过的终端操作都是返回一个 boolean ( a ...

最新文章

  1. matlab图形绘制基础(东北大学MOOC笔记)
  2. mc幻想乡java_我的世界1.7.2幻想乡整合版下载_我的世界1.7.2东方幻想乡下载_游戏之家...
  3. vue打包路径.html问题,如何解决vue.js打包报错问题
  4. flask框架创建数据库定义字段类型和字段常用参数
  5. (剑指Offer)面试题4:替换空格
  6. ASA下邮件发送经常失败
  7. NestedScrollView、ScrollView 加载完自动滑动至底部问题的解决方案
  8. [转]AAuto编程语言官方站 网站服务条款
  9. 大数据分析应用有哪些机遇与挑战
  10. jnid中mysql的驱动类_JDBC与JNDI的区别
  11. 通过PXE网络启动WinPE的方法
  12. 开源免费etl作业批量调度必备软件 Taskctl Free应用版
  13. ifix组态软件研究控制按钮权限
  14. 记录linux历史命令,Linux历史记录命令
  15. 你在工作中遇到了哪些问题,解决办法是什么
  16. 各点之间的最短距离——Java实现
  17. 中国移动SP短信网关接入平台
  18. 萝卜新版APP一键云端打包/无需电脑/无需AS工具
  19. 连接高匿代理接口调用并测试是否可用
  20. 科技爱好者周刊(第 202 期):三个有启发的学习方法

热门文章

  1. latex 分行 表格标题过长_使用latex撰写Elsevier论文,遇到的表格标题caption换行以及左对齐问题的解决办法...
  2. PaaS服务从heroku迁移到Fly.io小计
  3. 大数据分析你不能不懂的6个核心技术
  4. 自定义桌面右键菜单-Win 10 版
  5. 蓝牙音乐和导航语音播放混音卡顿问题
  6. 各种门平面图画法_关于CAD各种门怎么画平面图就行 CAD铝合金门窗
  7. MyBatis官网下载步骤
  8. Hinton NIPS2017 手写识别实现 TensorFlow \ Pytorch \ Keras
  9. 音乐分类及处理——用机器学习的方法实现python
  10. 【算法】1282. 用户分组(多语言实现)