Stream(三)
- public class Test08 {
- /*
- * 二、中间的加工操作
- * (1)filter(Predicate p):过滤
- * (2)distinct():去重
- * (3)limit(long maxSize):取有限的几个
- * (4)skip(long n):跳过n个
- * (5)peek(Consumer action) 接收Lambda表达式,对流中的每个数据执行Lambda体操作
- * (6)sorted():排序,按照自然排序
- * sorted(Comparator com):排序,按照定制排序
- * (7)map(Function f):接收Lambda表达式,对流中的每个数据,执行Lambda体操作,返回新的数据构成新的流
- * (8)flatMap(Function f)
- *
- * map(Function<? super T,? extends R> mapper) map操作流中的把T对象变成R对象,由R对象构成新的流
- * flatMap(Function<? super T,? extends Stream<? extends R>> mapper)
- * flatMap把流中的数据T对象压扁变成一个Stream,然后把一个个的Stream最后再合成一个大的Stream
- */
- public static void main(String[] args) {
- // test01();
- // test02();
- // test03();
- // test04();
- // test05();
- // test06();
- // test07();
- // test08();
- // test09();
- // test10();
- // test11();
- test12();
- }
- public static void test01() {
- //1、创建Stream
- Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6);
- //2、加工处理
- //过滤:filter(Predicate p)
- //把里面的偶数拿出来
- /*
- * filter(Predicate p)
- * Predicate是函数式接口,抽象方法:boolean test(T t)
- */
- stream = stream.filter(t -> t % 2 == 0);
- //3、终结操作:例如:遍历
- stream.forEach(System.out::println);
- }
- //连起来写
- public static void test02() {
- Stream.of(1, 2, 3, 4, 5, 6)
- .filter(t -> t % 2 == 0)
- .forEach(System.out::println);
- }
- //去重
- public static void test03() {
- Stream.of(1, 2, 3, 4, 5, 6, 2, 2, 3, 3, 4, 4, 5)
- .distinct()
- .forEach(System.out::println);
- }
- //取指定数量
- public static void test04() {
- Stream.of(1, 2, 3, 4, 5, 6, 2, 2, 3, 3, 4, 4, 5)
- .limit(3)
- .forEach(System.out::println);
- }
- //去重加过滤
- public static void test05() {
- Stream.of(1, 2, 2, 3, 3, 4, 4, 5, 2, 3, 4, 5, 6, 7)
- .distinct() //(1,2,3,4,5,6,7)
- .filter(t -> t % 2 != 0) //(1,3,5,7)
- .limit(3)
- .forEach(System.out::println);
- }
- //跳过指定的位置
- public static void test06() {
- Stream.of(1, 2, 3, 4, 5, 6, 2, 2, 3, 3, 4, 4, 5)
- .skip(5)
- .forEach(System.out::println);
- }
- //跳过 去重 过滤
- public static void test07() {
- Stream.of(1, 2, 3, 4, 5, 6, 2, 2, 3, 3, 4, 4, 5)
- .skip(5)
- .distinct()
- .filter(t -> t % 3 == 0)
- .forEach(System.out::println);
- }
- public static void test08() {
- long count = Stream.of(1, 2, 3, 4, 5, 6, 2, 2, 3, 3, 4, 4, 5)
- .distinct()
- .peek(System.out::println) //Consumer接口的抽象方法 void accept(T t)
- .count();//终止操作
- System.out.println("count=" + count);
- }
- public static void test09() {
- //输出出前三个最大值,前三名最大的,不重复
- Stream.of(11, 2, 39, 4, 54, 6, 2, 22, 3, 3, 4, 54, 54)
- .distinct()
- .sorted((t1, t2) -> -Integer.compare(t1, t2))//Comparator接口 int compare(T t1, T t2) 注意这里前面加了个-号(-Integer) 倒序
- .limit(3)
- .forEach(System.out::println);
- }
- public static void test10() {
- Stream.of(1, 2, 3, 4, 5)
- .map(t -> t += 1)//Function<T,R>接口抽象方法 R apply(T t)
- .forEach(System.out::println);
- }
- //转换成大写
- public static void test11() {
- String[] arr = {"hello", "world", "java"};
- Arrays.stream(arr).map(t -> t.toUpperCase())
- .forEach(System.out::println);
- }
- public static void test12() {
- String[] arr = {"hello", "world", "java"};
- Stream<String> flatMap = Arrays.stream(arr)
- .flatMap(t -> Stream.of(t.split("|")));//Function<T,R>接口抽象方法 R apply(T t) 现在的R是一个Stream
- flatMap.forEach(System.out::println);
- }
- }
Stream(三)的更多相关文章
- NodeJS Stream 三:readable
什么是可读流 可读流是生产数据用来供程序消费的流.我们常见的数据生产方式有读取磁盘文件.读取网络请求内容等,看一下前面介绍什么是流用的例子: const rs = fs.createReadStrea ...
- NodeJS 难点(网络,文件)的 核心 stream 三:readable ?
什么是可读流 可读流 常见 读取磁盘文件.读取网络请求内容等,看一下前面介绍什么是流用的例子: const rs = fs.createReadStream(filePath); 我们常见的控 ...
- 第二章 Stream API
引例: 1 List<String> strList = Arrays.asList("zhaojigang","nana","tiany ...
- JAVA8之lambda表达式具体解释,及stream中的lambda使用
前言: 本人也是学习lambda不久,可能有些地方描写叙述有误,还请大家谅解及指正! lambda表达式具体解释 一.问题 1.什么是lambda表达式? 2.lambda表达式用来干什么的? 3.l ...
- Stream闪亮登场
Stream闪亮登场 一. Stream(流)是什么,干什么 Stream是一类用于替代对集合操作的工具类+Lambda式编程,他可以替代现有的遍历.过滤.求和.求最值.排序.转换等 二. Strea ...
- 1.2 Stream API
引例: List<String> strList = Arrays.asList("zhaojigang","nana","tianya& ...
- Stream API
引例: 1 List<String> strList = Arrays.asList("zhaojigang","nana","tiany ...
- Java 8创建Stream流的5种方法
不知不觉间,Java已经发展到13了,来不及感慨时间过得真的太快了,来不及学习日新月异的技术更新,目前大多数公司还是使用的JDK8版本,一方面是版本的稳定,另一方面是熟悉,所以很多公司都觉得不升级也挺 ...
- java8(2)--- Stream API
1.简述 Java8中有两大最为重要的改变.第一个是 Lambda 表达式:另外一 个就是 Stream API. Stream 是处理集合的抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复 ...
- [源码解析] 当 Java Stream 遇见 Flink
[源码解析] 当 Java Stream 遇见 Flink 目录 [源码解析] 当 Java Stream 遇见 Flink 0x00 摘要 0x01 领域 1.1 Flink 1.2 Java St ...
随机推荐
- 现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?
Thread t1 = new Thread(new T1()); Thread t2 = new Thread(new T2()); Thread t3 = new Thread(new T3()) ...
- 5.Strom-事务型拓扑
- 跟我一起学Redis之Redis概述
背景 技术的更新迭代,是程序员最最最头大的事,总是在每个网络角落中有感慨声:学不动啦: 其实新技术并不是凭空而出,而是随着业务推进.数据驱动.技术积累促使开发者的不断探索和实践,最终横空出世--&qu ...
- xss利用——BeEF#stage2(初始并持续化控制)
全文概览 浏览器攻击方法流程 攻击浏览器一般分为几个阶段,如下图 整个过程分为三个步骤,第一步是初始化控制,第二步是持续控制,第三步是攻击.在第三步中的七个攻击方法是可以交叉的,比如可以同时攻击用户和 ...
- 安装Ubuntu虚拟机
centos已经满足不了我了,这里就装了个虚拟机,等有钱了再单配台单系统的Linux主机. 一.下载Ubuntu的ISO文件 用国内的网易镜像站点 进去点个16.04.6,然后下个64位的.iso就好 ...
- 注解在Spring中的运用(对象获取、对象单例/多例、值的注入、初始化/销毁方法、获取容器)
1.注解的方式获取对象 (1)导包: (2)书写配置文件(要保证已经导入了约束): <?xml version="1.0" encoding="UTF-8" ...
- Java 使用UDP传输一个小文本文件
工具1:Eclipse 工具2:IntelliJ IDEA Java工程的目录结构(基于IntelliJ IDEA) 例1.1:接收方,因为接收到的数据是字节流,为了方便,这里是基于Apache co ...
- Windows Server 2003 蓝屏 -- 系统故障:停止错误
Windows Server 2003 EE 出现蓝屏: 0X0000004D (0X000f27D9, 0X000F27D9, 0X0000000C, 0X00000000) 蓝屏拍照: 重启机器 ...
- tslib-1.4移植(转)
转自:http://blog.163.com/zhuandi_h/blog/static/180270288201222310291262/ 环境:host:Ubuntu11.10target:Oma ...
- nginx的变量系统
本来想写一下nginx的脚本引擎的,但是看起来实在是有点庞大,一时间还不知道该从哪里写比较好.就先写一下他的变量系统吧,这是脚本引擎非常重要的组成部分. 首先为了表述清楚先规定几个术语吧 内置变量:n ...