• Stream流常见操作


    .stream() 常用方法

    .forEach()

    该方法接收一个 Consumer 接口函数,会将每一个流元素交给该函数进行处理

    .filter():过滤

    该接口接收一个 Predicate 函数式接口参数(可以是一个Lambda或方法引用)作为筛选条件。

    private static void filterDemo(){
            String[] array = { "张无忌", "张三丰", "周芷若" };
            Stream<String> stream = Stream.of(array);
            Stream<String> result = stream.filter(s -> s.startsWith("张"));
            result.forEach(s -> System.out.println(s));
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    .map() : 映射

    如果需要将流中的元素映射到另一个流中,可以使用 map 方法。
    该接口需要一个 Function 函数式接口参数,可以将当前流中的T类型数据转换为另一种R类型的流。

    private static void mapDemo(){
            String[] array = {"10", "12", "18"};
            Stream<String> stringStream = Stream.of(array);
            Stream<Integer> integerStream = stringStream.map(s -> Integer.parseInt(s));
            integerStream.forEach(integer -> System.out.println(integer));
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    count():统计流中的元素个数

    正如旧集合 Collection 当中的 size 方法一样,流提供 count 方法来数一数其中的元素个数
    long num = stream.count();

    limit():取用前几个

    skip():跳过前几个

    concat():组合

    private static void concatDemo(){
            Stream<String> stream1 = Stream.of("张三");
            Stream<String> stream2 = Stream.of("李四");
            Stream<String> stream = Stream.concat(stream1,stream2);
            stream.forEach(s -> System.out.println(s));
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    sorted() :排序

    元素收集

    1.收集到List集合:

    流对象.collect( Collectors.toList() )
    
    • 1

    获得List集合。

    2.收集到Set集合:

    流对象.collect( Collectors.toSet() )
    
    • 1

    获得Set集合。

    3.收集到数组:

    流对象. toArray()
    
    • 1

    由于泛型擦除的原因,返回值类型是Object[]

    字符串拼接

    参数为连接符,返回值为一个集合。

    private static void joinDemo(){
            List<String> list = new ArrayList<>();
            list.add("张无忌");
            list.add("周芷若");
            list.add("赵敏");
            list.add("张强");
            list.add("张三丰");
            System.out.println(list);
            System.out.println(list.stream().collect(Collectors.joining(",")));
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    分组

    归约 reduce()

    rudece方法的功能是从一个流中生成一个值,reduce方法参数为一个函数,返回值为Optional对象。

    private static void reduceDemo(){
            List<Integer> num = Arrays.asList(1, 2, 4, 5, 6, 7);
            // 求和
            num.stream().reduce((x, y) -> x+y ).ifPresent(System.out::println);
            // 求最大值
            num.stream().reduce(Integer::max).ifPresent(System.out::println);
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    distinct() 去重

    学习知乎:Stream流处理介绍以及Stream的基本操作

  • 相关阅读:
    Python 数据容器(1) - list(列表)
    【技术分享】微服务开发的幸福感,是如何提升的?
    美国亚马逊遥控无人机出口UL961的测试报告
    力扣第226翻转二叉数 c++三种方法 +注释
    WebServer——二:线程池
    药品和药企信息接口
    Java Web3J :使用web3j监听、查询、订阅智能合约的事件
    jdk、jre、jvm区别
    [SpringCloudDataFlow v2.3.0源码系列]-3-启动类DataFlowServerApplication简介
    综合性练习
  • 原文地址:https://blog.csdn.net/m0_60708917/article/details/134486291