博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常用Java8代码汇编(二)
阅读量:4147 次
发布时间:2019-05-25

本文共 1915 字,大约阅读时间需要 6 分钟。

Stream流

Stream流主要用于对集合的数据进行加工处理,可以将需要处理的元素集合看作一种流,流在管道中传输,并且在管道的节点进行处理,比如 筛选,排序,聚合

对于流的操作,主要为三个步骤,流的创建 中间操作 最终操作

流的创建

List
names = Arrays.asList("c","e","d","b","e");//通过集合创建流Stream
stream = names.stream();//通过Stream创建流 Stream
stream = Stream.of("c","e","d","b","e");

中间操作

多个中间操作可以结合使用

  • filter 通过设置过滤条件过滤出符合条件的元素
names.stream().filter(f ->!"e".equals(f)).forEach(System.out::print);//cdb
  • map 遍历每个元素进行相应的处理
names.stream().map(f -> f + "1").forEach(System.out::print);//c1e1d1b1e1
  • distinct 去除重复的元素
names.stream().distinct().forEach(System.out::print);//cedb
  • sorted 对流进行排序处理
names.stream().sorted().forEach(System.out::print);//bcdeenames.stream().sorted(Comparator.reverseOrder()).forEach(System.out::print);//eedcb
  • limit 返回流的前n个元素
names.stream().limit(2).forEach(System.out::print);//ce
  • skip 去除流的前n个元素
names.stream().skip(2).forEach(System.out::print);//dbe

最终操作

操作流来产生一个最终结果
forEach 迭代流中的每个元素

names.stream().skip(2).forEach(System.out::print);//dbe

count 统计流中元素的个数

long l = names.stream().skip(2).count();        System.out.println(l);//3

collect 将流重新装为一个集合

List
list = names.stream().skip(2).collect(Collectors.toList()); System.out.println(list);//[d, b, e]

统计

一些产生统计结果的收集器也非常有用。它们主要用于int、double、long等基本类型上,它们可以用来产生类似如下的统计结果。

List
numbers = Arrays.asList(3, 2, 2, 3, 7, 3, 5); IntSummaryStatistics stats = numbers.stream().mapToInt((x) -> x).summaryStatistics(); System.out.println("列表中最大的数 : " + stats.getMax());System.out.println("列表中最小的数 : " + stats.getMin());System.out.println("所有数之和 : " + stats.getSum());System.out.println("平均数 : " + stats.getAverage());

两个集合的数据处理

allMatch 会一直迭代所有的元素
anyMatch 只要有一个满足条件的元素就结束

List
names = Arrays.asList("a","e","d","b","t");List
tags = Arrays.asList("r","t","q","v","c");//判断tags中是否包含与names中相同的元素boolean isFlag = names.stream().allMatch(v -> tags.stream().anyMatch(s -> s.equals(v)));

转载地址:http://iviti.baihongyu.com/

你可能感兴趣的文章
spring cloud的的服务消费者
查看>>
特征脸技术及其在人像检测应用研究
查看>>
spring mvc 的jpa JpaRepository数据层 访问方式汇总
查看>>
Lombok用法
查看>>
Windows下用Nginx配置https服务器
查看>>
spring quartz 的定时器cronExpression表达式写法(转载)
查看>>
环境安装准备
查看>>
Freemaker使用记录
查看>>
1分钟通晓C语言的4种预定义符号
查看>>
浅析宏和函数的区别与联系
查看>>
浅析程序执行的整个过程
查看>>
linux线程剖析(Part1)—1个“假“的tcb
查看>>
linux线程互斥与同步(part1)—互斥锁(mutex)的原理及其实现机制
查看>>
线程剖析(part2)—线程控制及线程属性
查看>>
线程互斥与同步(part2)—互斥锁(Mutex)的“cp”:条件变量(Condition Variable)
查看>>
线程互斥与同步(part4)—终结篇:“一股清流”—读写锁(rwlock)
查看>>
linux下gdb的安装方法
查看>>
SIGCHLD信号与进程异步等待
查看>>
可重入函数与线程安全
查看>>
linux信号基本概念及如何产生信号
查看>>