首页 > 其他分享 >Stream流学习

Stream流学习

时间:2024-09-27 21:54:12浏览次数:3  
标签:Stream stream 元素 流中 学习 使用 操作

使用步骤:

1. 创建Stream流

Stream流可以通过多种方式创建,主要包括以下几种:

  • 通过集合(Collection)
    • 使用Collection接口中的stream()方法获取顺序流,如List<String> list = new ArrayList<>(); Stream<String> stream = list.stream();
    • 使用Collection接口中的parallelStream()方法获取并行流,如Stream<String> parallelStream = list.parallelStream();
  • 通过数组(Array)
    • 使用Arrays类的stream(T[] array)静态方法,如String[] array = {"a", "b", "c"}; Stream<String> stream = Arrays.stream(array);
  • 通过Stream接口的静态方法
    • 使用Stream.of(T... values)方法,如Stream<String> stream = Stream.of("a", "b", "c");
    • 使用Stream.iterate(T seed, UnaryOperator<T> f)Stream.generate(Supplier<T> s)方法创建无限流,但通常需要通过limit()等方法限制其长度。
  • 其他方式
    • 通过文件、网络输入流等创建Stream流,如使用Files.lines(Path path)方法读取文件行。

2. 中间操作链

中间操作是对Stream流进行处理的步骤,它们会返回一个新的Stream流,而不会立即执行处理。中间操作可以连接多个,形成一个操作链。常见的中间操作包括:

  • filter(Predicate<? super T> predicate):过滤流中的元素。
  • map(Function<? super T, ? extends R> mapper):对流中的每个元素应用给定的函数,并将其结果作为新的流中的元素。
  • sorted():对流中的元素进行排序(自然排序或自定义排序)。
  • limit(long maxSize):限制流中元素的数量。
  • skip(long n):跳过流中的前n个元素。
  • distinct():去除流中的重复元素(基于元素的hashCode()equals()方法)。

3. 终止操作

终止操作会触发前面所有中间操作的执行,并产生一个结果或副作用。终止操作之后,Stream流将不能再被使用。常见的终止操作包括:

  • forEach(Consumer<? super T> action):对流中的每个元素执行给定的操作。
  • collect(Collectors.toList()):将流中的元素收集到List中。
  • min(Comparator<? super T> comparator)max(Comparator<? super T> comparator):根据给定的比较器找到流中的最小或最大元素。
  • count():返回流中的元素数量。
  • reduce(BinaryOperator<T> accumulator):通过归约操作将流中的所有元素组合起来,得到一个值。

总结:

标签:Stream,stream,元素,流中,学习,使用,操作
From: https://blog.csdn.net/m0_74931752/article/details/142601843

相关文章

  • 嵌入式学习--数据结构+算法
    嵌入式学习--数据结构+算法数据结构1.1数据1.2逻辑结构1.3存储结构1)顺序存储结构2)链式存储结构1.4操作(数据的运算)算法2.1算法与程序2.2算法与数据结构2.3算法的特性2.4如何评价一个算法的好坏?2.5时间复杂度2.6空间复杂度数据结构数据的逻辑结构、存储结构、......
  • 【鸟类识别系统】计算机毕设项目+卷积神经网络算法+人工智能+深度学习+模型训练+Pytho
    一、介绍鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网......
  • 【花朵识别系统】计算机毕设案例+卷积神经网络算法+人工智能+深度学习+Django网页界面
    一、介绍花朵识别系统。本系统采用Python作为主要编程语言,基于TensorFlow搭建ResNet50卷积神经网络算法模型,并基于前期收集到的5种常见的花朵数据集(向日葵、玫瑰、蒲公英、郁金香、菊花)进行处理后进行模型训练,最后得到一个识别精度较高的模型,然后保存为本地的h5格式文件,便......
  • 【交通标志识别系统】计算机毕设案例+卷积神经网络算法+人工智能+深度学习+模型训练+D
    一、介绍交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Dj......
  • 【赛博炼丹】深度学习软件安装及环境配置:Anaconda、CUDA、cuDNN、PyTorch及PyCharm
    前言建议大伙自己建一个文件夹(不能有中文),专门放深度学习的软件,后续添加环境,比较方便。1.安装Anaconda1.1下载AnacondaAnaconda官网:https://www.anaconda.com清华大学镜像网站:Indexof/anaconda/archive/|清华大学开源软件镜像站|TsinghuaOpenSourceMirror安装A......
  • Typora安装学习
      整理学习分享一下markdown编辑软件Typora最新版的安装学习内容。0-声明  本文内容所涉及软件为商业软件,本文相关内容仅限于个人学习研究使用,不作为任何商业用途使用。  如需长期使用此软件,或是在商业过程中需要使用此软件,还请支持正版购买。  因使用本文涉及软件及......
  • 经典强化学习算法:分层强化学习算法 —— options算法
    论文地址:https://people.cs.umass.edu/~barto/courses/cs687/Sutton-Precup-Singh-AIJ99.pdf分层强化学习算法options的原论文中的定义:......
  • 网络安全自学入门:(超详细)从入门到精通学习路线&规划,学完即可就业
     很多人上来就说想学习黑客,但是连方向都没搞清楚就开始学习,最终也只是会无疾而终!黑客是一个大的概念,里面包含了许多方向,不同的方向需要学习的内容也不一样。算上从学校开始学习,已经在网安这条路上走了10年了,无论是以前在学校做安全研究,还是毕业后在百度、360从事内核安全产......
  • prometheus学习笔记之node-export
    1.安装node-exportk8s各node节点使⽤⼆进制或者daemonset⽅式安装node_exporter,⽤于收集各k8snode节点宿主机的监控指标数据,默认监听端⼝为9100wgethttps://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gztarxfno......
  • Flink(五)DataStream流处理算子
    DataStream流处理算子Source算子(数据读入)Flink可以使用StreamExecutionEnvironment.addSource(source)来为我们的程序添加数据来源基于本地集合的sourceDataStream<String>words=env.fromElements("hello","flink","stream");基于文件的sourcereadTextFile(path)......