欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于java8 中的steam一些东西

程序员文章站 2022-07-10 18:31:47
Stream属于java1.8的特性之一,在代码中使用可以使代码更加美观。下面是之前总结的部分功能。Stream的操作符总体来讲分为两种: 中间操作符和终止操作符中间操作符​中间操作符在执行制定处理程序后,数据流依然可以传递给下一级的操作符.中间操作符包含8种(排除了parallel,sequential,这两个操作并不涉及到对数据流的加工操作):方法名作用map,mapToInt,mapToLong,mapToDouble把比如A->B,这里默认提供了转int,lo...

Stream属于java1.8的特性之一,在代码中使用可以使代码更加美观。下面是之前总结的部分功能。
Stream的操作符总体来讲分为两种: 中间操作符终止操作符

中间操作符

​ 中间操作符在执行制定处理程序后,数据流依然可以传递给下一级的操作符.中间操作符包含8种(排除了parallel,sequential,这两个操作并不涉及到对数据流的加工操作):

方法名 作用
map,mapToInt,mapToLong,mapToDouble 把比如A->B,这里默认提供了转int,long,double的操作符
flatmap,flatmapToInt,flatmapToLong,flatmapToDouble 把int[]{2,3,4} 拍平变成 2,3,4 .也就是从原来的一个数据变成了3个数据,这里默认提供了拍平成int,long,double的操作符
limit 限流.限制输出的数量.比如数据流中有10个 我只要出前3个
distinct 去重,去除重复的元素.底层使用的equals
filter 过滤操作
peek 选出操作,选出元素进行操作处理,读取获取,编辑等
skip 跳过操作,跳过某些元素
sorted 排序操作,对元素进行排序

终止操作符

​ 终止操作符就是用来对数据进行收集或者消费的,数据到了终止操作这里就不会向下流动了,终止操作符只能使用一次

方法名 作用
collect 收集操作, 官方的提供的Collectors 提供了非常多收集器,可以说Stream 的核心在于Collectors
count 统计,统计最终的数据个数
findFirst,findAny 查找操作, 查找第一个,查找任意一个,返回一个Optional类型
noneMatch,allMatch,anyMatch 匹配操作,数据流中是否存在符合条件的元素,返回Boolean值
min,max 返回数据流中最大最小的值
reduce 规约操作, 将整个数据流的值规约为一个值
forEach,forEachOrderd 遍历操作
toArray 转换成数组

map

    public static void main(String[] args) {
        Stream.of("abc","cbd","dds").map(String::length).forEach(System.out::println);
        System.out.println("----------------");
        Stream.of("abc","cbd","dds").map(e ->e.replace("b","\\")).forEach(System.out::println);
        System.out.println("----------------");
        Stream.of("abc","cbd","dds").mapToDouble(String::length).forEach(System.out::println);
        System.out.println("----------------");
        Stream.of("a-b-c", "cb-d", "d-ds").flatMap(e -> Stream.of(e.split("-"))).forEach(System.out::println);   
    }	
输出:
3
3
3
----------------
a\c
c\d
dds
----------------
3.0
3.0
3.0
----------------
a
b
c
cb
d
d
ds

filter,distinct,sorted

        Stream.of(4,3,5,7,8,3,7,9,2,6,9).distinct().filter(e ->e >= 5).sorted().forEach(System.out::println);
5
6
7
8
9

reduce

        int sum = Stream.of(21,-22,3,5).reduce(0,(e1,e2)->e1+e2);
        System.out.println(sum);
------------------
    输出7

本文地址:https://blog.csdn.net/weixin_44168259/article/details/109279252