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