• 概念

    中间操作的意思是,执行完此方法之后,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. SOA和SaaS的区别
  2. sql server 2008数据复制
  3. 【视频】vue表单提交
  4. 源码时代php中级项目,PHP学科项目评比圆满结束
  5. Python 对象和类
  6. iOS 推送 获取手机设备的 deviceToken
  7. symfony3 使用命令行工具生成Entity实体所踩的坑
  8. python 学习之路开始了
  9. Linux设备驱动模型-Bus
  10. 从 C10K 到 DPDK
  11. 电脑计算机稳定删除垃圾游戏,电脑卡怎么办简单步骤_如何清理电脑垃圾
  12. js前置递增和后置递增
  13. 解决win10下 git闪退的问题(或者使用git命令报错fatal: open /dev/null or dup failed)
  14. 前端 原型对象中this的认识
  15. pytorch报错:PicklingError: Can’t pickle <function at 0x000001EA6923EAF0>: attribute lookup on main fai
  16. 掩膜裁剪tif步骤_栅格数据批量掩膜(裁剪)
  17. 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
  18. Android尺寸标注设计大全和Android切图规范
  19. ABAQUS 报错 “Too many attempts made for this increment“
  20. 歪解:备份BlackBerry手机上面的安装好的程序(cod)

热门文章

  1. vue-li 配置介绍
  2. python编写接口初识一
  3. Python爬虫入门教程 18-100 煎蛋网XXOO图片抓取
  4. Vue 添加外部的时间插件不触发v-model事件更改数据
  5. [转] linux-Centos7安装python3并与python2共存
  6. i2c--ioctl--主机控制器驱动(i2c_adapter)--外设驱动(i2c_driver)
  7. 程序员编程艺术第一~十章集锦与总结(教你如何编程)--持续更新中
  8. 使用C#开发一个简单的P2P应用
  9. datax源码阅读一:python文件
  10. WINDOWS 端口查看