• 概念

    中间操作的意思是,执行完此方法之后,Stream流依然可以继续执行其他操作。

  • 常见方法

    方法名 说明
    Stream<T> filter(Predicate predicate) 用于对流中的数据进行过滤
    Stream<T> limit(long maxSize) 返回此流中的元素组成的流,截取前指定参数个数的数据
    Stream<T> skip(long n) 跳过指定参数个数的数据,返回由该流的剩余元素组成的流
    static <T> Stream<T> concat(Stream a, Stream b) 合并a和b两个流为一个流
    Stream<T> distinct() 返回由该流的不同元素(根据Object.equals(Object) )组成的流
    Stream<T> sorted() 返回由此流的元素组成的流,根据自然顺序排序
    Stream<T> sorted(Comparator comparator) 返回由该流的元素组成的流,根据提供的Comparator进行排序
    <R> Stream<R> map(Function mapper) 返回由给定函数应用于此流的元素的结果组成的流
    IntStream mapToInt(ToIntFunction mapper) 返回一个IntStream其中包含将给定函数应用于此流的元素的结果
  • filter代码演示

public class StreamDemo01 {public static void main(String[] args) {//创建一个集合,存储多个字符串元素ArrayList<String> list = new ArrayList<String>();list.add("林青霞");list.add("张曼玉");list.add("王祖贤");list.add("柳岩");list.add("张敏");list.add("张无忌");//需求1:把list集合中以张开头的元素在控制台输出list.stream().filter(s -> s.startsWith("张")).forEach(System.out::println);System.out.println("--------");//需求2:把list集合中长度为3的元素在控制台输出list.stream().filter(s -> s.length() == 3).forEach(System.out::println);System.out.println("--------");//需求3:把list集合中以张开头的,长度为3的元素在控制台输出list.stream().filter(s -> s.startsWith("张")).filter(s -> s.length() == 3).forEach(System.out::println);}
}

limit&skip代码演示

public class StreamDemo02 {public static void main(String[] args) {//创建一个集合,存储多个字符串元素ArrayList<String> list = new ArrayList<String>();list.add("林青霞");list.add("张曼玉");list.add("王祖贤");list.add("柳岩");list.add("张敏");list.add("张无忌");//需求1:取前3个数据在控制台输出list.stream().limit(3).forEach(System.out::println);System.out.println("--------");//需求2:跳过3个元素,把剩下的元素在控制台输出list.stream().skip(3).forEach(System.out::println);System.out.println("--------");//需求3:跳过2个元素,把剩下的元素中前2个在控制台输出list.stream().skip(2).limit(2).forEach(System.out::println);}
}

concat&distinct代码演示

public class StreamDemo03 {public static void main(String[] args) {//创建一个集合,存储多个字符串元素ArrayList<String> list = new ArrayList<String>();list.add("林青霞");list.add("张曼玉");list.add("王祖贤");list.add("柳岩");list.add("张敏");list.add("张无忌");//需求1:取前4个数据组成一个流Stream<String> s1 = list.stream().limit(4);//需求2:跳过2个数据组成一个流Stream<String> s2 = list.stream().skip(2);//需求3:合并需求1和需求2得到的流,并把结果在控制台输出
//        Stream.concat(s1,s2).forEach(System.out::println);//需求4:合并需求1和需求2得到的流,并把结果在控制台输出,要求字符串元素不能重复Stream.concat(s1,s2).distinct().forEach(System.out::println);}
}

sorted代码演示

public class StreamDemo04 {public static void main(String[] args) {//创建一个集合,存储多个字符串元素ArrayList<String> list = new ArrayList<String>();list.add("linqingxia");list.add("zhangmanyu");list.add("wangzuxian");list.add("liuyan");list.add("zhangmin");list.add("zhangwuji");//需求1:按照字母顺序把数据在控制台输出
//        list.stream().sorted().forEach(System.out::println);//需求2:按照字符串长度把数据在控制台输出list.stream().sorted((s1,s2) -> {int num = s1.length()-s2.length();int num2 = num==0?s1.compareTo(s2):num;return num2;}).forEach(System.out::println);}
}

map&mapToInt代码演示

public class StreamDemo05 {public static void main(String[] args) {//创建一个集合,存储多个字符串元素ArrayList<String> list = new ArrayList<String>();list.add("10");list.add("20");list.add("30");list.add("40");list.add("50");//需求:将集合中的字符串数据转换为整数之后在控制台输出
//        list.stream().map(s -> Integer.parseInt(s)).forEach(System.out::println);
//        list.stream().map(Integer::parseInt).forEach(System.out::println);
//        list.stream().mapToInt(Integer::parseInt).forEach(System.out::println);//int sum() 返回此流中元素的总和int result = list.stream().mapToInt(Integer::parseInt).sum();System.out.println(result);}
}

Stream流中间操作方法相关推荐

  1. Stream流终结操作方法

    概念 终结操作的意思是,执行完此方法之后,Stream流将不能再执行其他操作. 常见方法 方法名 说明 void forEach(Consumer action) 对此流的每个元素执行操作 long ...

  2. JDK8 新特性Stream流的常用方法

    流表示包含着一系列元素的集合,我们可以对其做不同类型的操作,用来对这些元素执行计算 二.中间流的部分应用 中间操作会再次返回一个流,所以,我们可以链接多个中间操作,注意这里是不用加分号的. /* St ...

  3. 第八章_集合(3)_Map集合Stream流

    目录 一.Map 1.Map集合的基本使用 2.Map集合的常用方法 3.Map集合遍历 二.HashMap 三.TreeMap 四.可变参数 五.Stream流 1.Stream流概念 2.获取St ...

  4. java-函数式接口与Stream流

    函数式接口 有且仅有一个抽象方法的接口叫函数式接口. @FunctionInterface注解可以检查该接口是否为函数式接口. Myinterface in=() -> sout("函 ...

  5. 10.Stream流

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

  6. Java23-day14【函数式接口(Supplier\Consumer\Predicate\Function)、Stream流(生产方式\中间方法\终结方法)】

    视频+资料[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] Java基础--学习笔记(零起点打开java世界的大门)--博 ...

  7. Java面试知识点:红黑树、Stream流

    问题:Java面试知识点:红黑树.Stream流 答案: 1.红黑树 红黑树   • 平衡二叉B树   • 每一个节点可以是红或者黑   • 红黑树不是高度平衡的,它的平衡是通过"自己的红黑 ...

  8. Flutter StreamController 异步通信、Stream 流异步通信

    题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. Flutter是谷歌推出的最新的移动开发框架. [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 [x2]各种系列的视频教程 ...

  9. Stream流的学习

    1.1.体验Stream流 package com.itheima01;import java.util.ArrayList;public class StreamDemo {public stati ...

最新文章

  1. aws lambda_为什么我会自动删除所有旧的推文以及我用来执行此操作的AWS Lambda函数...
  2. 程序员的高速学习法——以JS学习为例,进行图解
  3. comp313 formal methods lec1
  4. 科研实习 | 北京大学计算机系林亦波老师芯片设计软件组招收实习生
  5. Win11用户增长迅速!你升了吗?
  6. 决策的五个要素 by 彼得。德鲁克
  7. uhd630黑苹hdmi_【EFI】联想 ThinkCentre M920t-N000 i5-9500 UHD630 ALC662 10.14.6 HDMI 黑苹果Hackintosh 引导下载...
  8. myblog test
  9. gcd 最大公约数 和 lcm 最小公倍数
  10. BootStrap_04之jQuery插件(导航、轮播)、以及Less
  11. 大数据与云计算学习:数据分析(一)
  12. del/xcopy时如何在输出窗口中,不显示文件名
  13. 【MySQL】数据库的函数使用
  14. 中国柔性材料行业发展建议及竞争态势研究报告2021年版
  15. Use SageMath with PyCharm/PyDev (Use PyCharm/PyDev to run and debug SageMath scripts)
  16. jQuery实现AJAX定时刷新局部页面实例
  17. 找工作经验——EE Master 找CS工作总结
  18. c语言中的汉诺塔问题详解
  19. DO、PO、VO、DTO、BO、POJO概念
  20. 高薪前端都应该具备的开发好习惯

热门文章

  1. 《从0到1学习Flink》—— Apache Flink 介绍
  2. 【JQuery】使用JQuery 合并两个 json 对象
  3. 根据json对象的某一属性对其进行排序
  4. ubuntu 12.04下 eclipse的安装
  5. Spring与Quartz的整合实现定时任务调度
  6. JAVA语法基础 动手动脑及课后作业
  7. Ubuntu gnome 14.10下MySQLdb安装
  8. bfc和haslayout
  9. serial driver 2
  10. OnPaint()函数的作用原理