Chiriri's blog Chiriri's blog
首页
  • Java

    • JavaSE
    • JavaEE
    • 设计模式
  • Python

    • Python
    • Python模块
    • 机器学习
  • Golang

    • Golang
    • gRPC
  • 服务器

    • Linux
    • MySQL
    • NoSQL
    • Kubernetes
  • 项目

    • 传智健康
    • 畅购商城
  • Hadoop生态

    • Hadoop
    • Zookeeper
    • Hive
    • Flume
    • Kafka
    • Azkaban
    • Hbase
    • Scala
    • Spark
    • Flink
  • 大数据项目

    • 离线数仓
  • 青训营

    • 第四届青训营
  • HTML

    • HTML
    • JavaScript
  • Vue

    • Vue2
    • TypeScript
    • Vue3
    • Uni-APP
  • 数据结构与算法
  • C语言
  • 考研数据结构
  • 计算机组成原理
  • 计算机操作系统
  • Java基础

    • Java基础
    • Java集合
    • JUC
    • JVM
  • 框架

    • Spring
    • Dubbo
    • Spring Cloud
  • 数据库

    • MySQL
    • Redis
    • Elasticesearch
  • 消息队列

    • RabbitMQ
    • RocketMQ
  • 408

    • 计算机网络
    • 操作系统
    • 算法
  • 分类
  • 标签
  • 归档
  • 导航站
GitHub (opens new window)

Iekr

苦逼后端开发
首页
  • Java

    • JavaSE
    • JavaEE
    • 设计模式
  • Python

    • Python
    • Python模块
    • 机器学习
  • Golang

    • Golang
    • gRPC
  • 服务器

    • Linux
    • MySQL
    • NoSQL
    • Kubernetes
  • 项目

    • 传智健康
    • 畅购商城
  • Hadoop生态

    • Hadoop
    • Zookeeper
    • Hive
    • Flume
    • Kafka
    • Azkaban
    • Hbase
    • Scala
    • Spark
    • Flink
  • 大数据项目

    • 离线数仓
  • 青训营

    • 第四届青训营
  • HTML

    • HTML
    • JavaScript
  • Vue

    • Vue2
    • TypeScript
    • Vue3
    • Uni-APP
  • 数据结构与算法
  • C语言
  • 考研数据结构
  • 计算机组成原理
  • 计算机操作系统
  • Java基础

    • Java基础
    • Java集合
    • JUC
    • JVM
  • 框架

    • Spring
    • Dubbo
    • Spring Cloud
  • 数据库

    • MySQL
    • Redis
    • Elasticesearch
  • 消息队列

    • RabbitMQ
    • RocketMQ
  • 408

    • 计算机网络
    • 操作系统
    • 算法
  • 分类
  • 标签
  • 归档
  • 导航站
GitHub (opens new window)
  • JavaSE

    • Java简介
    • 基础语法
    • 数据类型
    • 变量
    • 运算符
    • 输入输出
    • 流程控制
    • 循环语句
    • idea中的辅助键
    • 数组
    • 方法
    • 面向对象基础
    • 字符串
    • ArrayList集合
    • 继承
    • 修饰符
    • 多态
    • 抽象
    • 接口
    • 类名作为形参和返回值
    • 内部类
    • Api
    • 异常
    • 集合
    • 泛型
    • Set集合和比较器
    • 树
    • 哈希
    • 可变参数
    • 创建不可变的集合
    • Stream流
      • 获取Stream流(创建流)
      • filter 过滤 (中间流)
        • test方法
      • limit 截取
      • skip 跳过
      • concat 合并 两个stream流
      • distinct 去除流中重复元素
      • forEach 对流中每个元素的操作(结束流)
      • count 流中元素的个数
      • Stream流 收集方法
        • collect()
        • toList
        • toSet
        • toMap
    • 方法引用
    • File
    • 多线程
    • 多线程高级
    • 网络编程
    • 类加载器
    • 反射
    • XML
    • 枚举
    • 注解
    • 单元测试
    • 日志
    • HTTP协议
    • Servlet
    • 请求对象
    • 响应对象
    • Cookie
    • Session
    • JSP
    • Listener
    • JDBC
  • JavaEE

  • Linux

  • MySQL

  • NoSQL

  • Python

  • Python模块

  • 机器学习

  • 设计模式

  • 传智健康

  • 畅购商城

  • 博客项目

  • JVM

  • JUC

  • Golang

  • Kubernetes

  • 硅谷课堂

  • C

  • 源码

  • 神领物流

  • RocketMQ

  • 短链平台

  • 后端
  • JavaSE
Iekr
2021-07-23
目录

Stream流

# Stream 流

# 获取 Stream 流 (创建流)

能使用 stream 流的类型

  • 单例集合

    • 使用 Collection 接口中的 strema () 方法

    • ArrayList<Integer> list = new ArrayList<>(List.of(1, 2, 3, 65, 7));
      Stream<Integer> stream = list.stream();
      stream.forEach(s -> System.out.println(s));
      // 也可使用链式编程
      list.stream().forEach(s -> System.out.println(s));
      
      1
      2
      3
      4
      5
  • 双列集合

    • 间接的生成流:先通过 keySet 或者 entrySet 获取一个 Set 集合,再获取 Stream 流

    • Map<String, Integer> key1 = Map.of("key1", 123, "key2", 456);
      key1.entrySet().stream().forEach(s -> System.out.println(s));
      
      1
      2
  • 数组

    • Arrays 中的静态方法 stream 生成流

    • int[] arr ={1,4,6,7,5,8};
      Arrays.stream(arr).forEach(s -> System.out.println(s));
      
      1
      2
  • 同种数据类型的多个数据

    • 使用 Stream 的 of 方法 与不可变集合类似

    • Stream.of(1,5,7,9,9).forEach(s -> System.out.println(s));
      
      1

# filter 过滤 (中间流)

filter 方法会获取流中的 每一个数据

# test 方法

传递一个 Stream 流中的元素,返回一个布尔值,如是 true 则当前数据保留,如为 false 则数据不保留

list.stream().filter(new Predicate<String>() {
    @Override
    public boolean test(String s) {
        boolean result = s.startsWith("张");
        return result;
    }
}).forEach(s -> System.out.println(s));
1
2
3
4
5
6
7

# limit 截取

截取 steam 流中前 n 个元素

list.stream().limit(2).forEach(s -> System.out.println(s));
1

# skip 跳过

跳过 steam 流中前 n 个元素

list.stream().skip(3).forEach(s -> System.out.println(s));
1

# concat 合并 两个 stream 流

Stream<String> stream = list.stream();
Stream<String> stream2 = list.stream();
Stream.concat(stream,stream2).forEach(s -> System.out.println(s));
1
2
3

# distinct 去除流中重复元素

依赖于 hashcode 和 equals 方法

list.stream().distinct().forEach(s -> System.out.println(s));
1

# forEach 对流中每个元素的操作 (结束流)

forEach 对此流中每个元素执行指定操作,只有一个抽象方法 accept ()

list.stream().forEach(new Consumer<String>() {
    @Override
    public void accept(String s) {
        System.out.println(s);
    }
});
1
2
3
4
5
6

# count 流中元素的个数

返回一个 long 类型的数

long count = list.stream().count();
System.out.println(count);
1
2

# Stream 流 收集方法

在 Stream 流无法直接修改集合 / 数组等数据源中数据,创建 Stream 流不影响原先数据

# collect()

# toList

List<String> collect = list.stream().skip(1).collect(Collectors.toList());

1
2

# toSet

Set<String> collect1 = list.stream().limit(2).collect(Collectors.toSet());

1
2

# toMap

Map<Character, Character> collect2 = list.stream().limit(2).collect(Collectors.toMap(
        s -> s.charAt(1) // key
        , s -> s.charAt(0) // value
));
1
2
3
4
编辑 (opens new window)
上次更新: 2023/12/06, 01:31:48
创建不可变的集合
方法引用

← 创建不可变的集合 方法引用→

最近更新
01
k8s
06-06
02
进程与线程
03-04
03
计算机操作系统概述
02-26
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Iekr | Blog
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式