Stream流中间操作方法
概念
中间操作的意思是,执行完此方法之后,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流中间操作方法相关推荐
- Stream流终结操作方法
概念 终结操作的意思是,执行完此方法之后,Stream流将不能再执行其他操作. 常见方法 方法名 说明 void forEach(Consumer action) 对此流的每个元素执行操作 long ...
- JDK8 新特性Stream流的常用方法
流表示包含着一系列元素的集合,我们可以对其做不同类型的操作,用来对这些元素执行计算 二.中间流的部分应用 中间操作会再次返回一个流,所以,我们可以链接多个中间操作,注意这里是不用加分号的. /* St ...
- 第八章_集合(3)_Map集合Stream流
目录 一.Map 1.Map集合的基本使用 2.Map集合的常用方法 3.Map集合遍历 二.HashMap 三.TreeMap 四.可变参数 五.Stream流 1.Stream流概念 2.获取St ...
- java-函数式接口与Stream流
函数式接口 有且仅有一个抽象方法的接口叫函数式接口. @FunctionInterface注解可以检查该接口是否为函数式接口. Myinterface in=() -> sout("函 ...
- 10.Stream流
一.Stream流 1.案例实现 按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素 把集合中所有以"张"开头的元素存储到一个新的集合 把"张" ...
- Java23-day14【函数式接口(Supplier\Consumer\Predicate\Function)、Stream流(生产方式\中间方法\终结方法)】
视频+资料[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs] Java基础--学习笔记(零起点打开java世界的大门)--博 ...
- Java面试知识点:红黑树、Stream流
问题:Java面试知识点:红黑树.Stream流 答案: 1.红黑树 红黑树 • 平衡二叉B树 • 每一个节点可以是红或者黑 • 红黑树不是高度平衡的,它的平衡是通过"自己的红黑 ...
- Flutter StreamController 异步通信、Stream 流异步通信
题记 -- 执剑天涯,从你的点滴积累开始,所及之处,必精益求精. Flutter是谷歌推出的最新的移动开发框架. [x1]微信公众号的每日提醒 随时随记 每日积累 随心而过 [x2]各种系列的视频教程 ...
- Stream流的学习
1.1.体验Stream流 package com.itheima01;import java.util.ArrayList;public class StreamDemo {public stati ...
最新文章
- SOA和SaaS的区别
- sql server 2008数据复制
- 【视频】vue表单提交
- 源码时代php中级项目,PHP学科项目评比圆满结束
- Python 对象和类
- iOS 推送 获取手机设备的 deviceToken
- symfony3 使用命令行工具生成Entity实体所踩的坑
- python 学习之路开始了
- Linux设备驱动模型-Bus
- 从 C10K 到 DPDK
- 电脑计算机稳定删除垃圾游戏,电脑卡怎么办简单步骤_如何清理电脑垃圾
- js前置递增和后置递增
- 解决win10下 git闪退的问题(或者使用git命令报错fatal: open /dev/null or dup failed)
- 前端 原型对象中this的认识
- pytorch报错:PicklingError: Can’t pickle <function at 0x000001EA6923EAF0>: attribute lookup on main fai
- 掩膜裁剪tif步骤_栅格数据批量掩膜(裁剪)
- 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛
- Android尺寸标注设计大全和Android切图规范
- ABAQUS 报错 “Too many attempts made for this increment“
- 歪解:备份BlackBerry手机上面的安装好的程序(cod)
热门文章
- vue-li 配置介绍
- python编写接口初识一
- Python爬虫入门教程 18-100 煎蛋网XXOO图片抓取
- Vue 添加外部的时间插件不触发v-model事件更改数据
- [转] linux-Centos7安装python3并与python2共存
- i2c--ioctl--主机控制器驱动(i2c_adapter)--外设驱动(i2c_driver)
- 程序员编程艺术第一~十章集锦与总结(教你如何编程)--持续更新中
- 使用C#开发一个简单的P2P应用
- datax源码阅读一:python文件
- WINDOWS 端口查看