Java Stream API 操作完全攻略:让你的代码更加出色 (二)

news2025/1/12 3:07:20

前言

  Java Stream 是一种强大的数据处理工具,可以帮助开发人员快速高效地处理和转换数据流。使用 Stream 操作可以大大简化代码,使其更具可读性和可维护性,从而提高开发效率。本文将为您介绍 Java Stream 操作的所有方面,包括 reduce、collect、count、anyMatch 等操作,让你的代码行云流水,更加优雅。

  1. reduce():将 Stream 中的所有元素合并为一个,可以传入一个初始值。
  2. collect():将 Stream 中的元素收集到一个集合中。
  3. count():返回 Stream 中元素的数量。
  4. anyMatch():判断是否存在至少一个元素满足指定的条件。
  5. allMatch():判断是否所有元素都满足指定的条件。
  6. noneMatch():判断是否不存在任何一个元素满足指定的条件。
  7. findFirst():返回 Stream 中的第一个元素。
  8. findAny():返回 Stream 中的任意一个元素。
  9. min():返回 Stream 中的最小元素。
  10. max():返回 Stream 中的最大元素。

示例 1. 使用 reduce() 将列表中的所有数字相加

代码示例:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        Integer[] integers = {1, 2, 3, 4, 5};
        int result = Arrays.stream(integers).reduce(0, Integer::sum);
        System.out.println("Result: " + result);
    }
}

输出结果:

Result: 15

2. 使用 collect() 将列表中的所有字符串拼接为一个字符串

代码示例:

import java.util.Arrays;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        String[] strings = {"apple", "banana", "cherry", "date"};
        String result = Arrays.stream(strings).collect(Collectors.joining(", "));
        System.out.println("Result: " + result);
    }
}

输出结果:

Result: apple, banana, cherry, date

3. 使用 count() 计算列表中的字符串数量

代码示例:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] strings = {"apple", "banana", "cherry", "date"};
        long result = Arrays.stream(strings).count();
        System.out.println("Result: " + result);
    }
}

输出结果:

Result: 4

4. 使用 anyMatch() 判断列表中是否存在以字母"a"开头的字符串

代码示例:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] strings = {"apple", "banana", "cherry", "date"};
        boolean result = Arrays.stream(strings).anyMatch(s -> s.startsWith("a"));
        System.out.println("Result: " + result);
    }
}

输出结果:

Result: true

5. 使用 allMatch() 判断列表中的所有字符串是否都以字母"a"开头

代码示例:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] strings = {"apple", "avocado", "apricot", "almond"};
        boolean result = Arrays.stream(strings).allMatch(s -> s.startsWith("a"));
        System.out.println("Result: " + result);
    }
}

输出结果:

Result: false

6. 使用 noneMatch() 判断列表中是否不存在包含字母"z"的字符串

代码示例:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String[] strings = {"apple", "banana", "cherry", "date"};
        boolean result = Arrays.stream(strings).noneMatch(s -> s.contains("z"));
        System.out.println("Result: " + result);
    }
}

输出结果:

Result: true

7. 使用 findFirst() 从列表中找到第一个长度为 4 的字符串

代码示例:

import java.util.Arrays;
import java.util.Optional;

public class Main {
    public static void main(String[] args) {
        String[] strings = {"apple", "banana", "cherry", "date"};
        Optional<String> result = Arrays.stream(strings).filter(s -> s.length() == 4).findFirst();
        System.out.println("Result: " + result.orElse("Not found"));
    }
}

输出结果:

Result: date

8. 使用 min() 找到列表中的最小值

代码示例:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        Integer[] integers = {3, 7, 1, 9, 2, 5};
        int result = Arrays.stream(integers).min(Integer::compareTo).orElse(-1);
        System.out.println("Result: " + result);
    }
}

输出结果:

Result: 1

9. 使用 min() 找到列表中的最小值

代码示例:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        Integer[] integers = {3, 7, 1, 9, 2, 5};
        int result = Arrays.stream(integers).min(Integer::compare).orElse(-1);
        System.out.println("Result: " + result);
    }
}

输出结果:

Result: 1

10. 使用 max() 找到列表中的最大值

代码示例:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        Integer[] integers = {3, 7, 1, 9, 2, 5};
        int result = Arrays.stream(integers).max(Integer::compare).orElse(-1);
        System.out.println("Result: " + result);
    }
}

输出结果:

Result: 9

结尾

  如果觉得对你有帮助,可以多多评论,多多点赞哦,也可以到我的主页看看,说不定有你喜欢的文章,也可以随手点个关注哦,谢谢。

  我是不一样的科技宅,每天进步一点点,体验不一样的生活。我们下期见!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416403.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WMS仓库管理系统,你能操作明白吗?别让"智能"变"滞能"

随着社会的进步&#xff0c;智能车间、智能工厂等申报的展开&#xff0c;“智能化”的概念&#xff0c;让企业系统出现更迭。以智能化仓储管理系统为例&#xff0c;企业工厂利用WMS的优势&#xff0c;依照运行的工作标准和运算法则&#xff0c;对仓库进行精细化管理。 WM…

IC学习笔记22——memory_compilermemory_wrapper

一、memory_compiler 1.1 memory_compiler的介绍 memory_compiler为一系列工具的统称,用于生成芯片开发所需要的memory。芯片开发中所需要的memory为sram、rom等。很多公司都有自己开发的memory_compiler工具。 1.2 SRAM基础 sram写操作(写1) 将要写入的数据“1”通过写入…

Vue学习笔记(3. 基本语法,数据绑定,指令)

1. 基本语法 vue2的基本语法如下&#xff1a; <html> <head> <title>testVUE</title> <script src"https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script> </head><body><div id"app">模板…

【操作系统】深入理解Linux虚拟内存管理

【操作系统】深入理解Linux虚拟内存管理 本篇跟大家说说内存管理&#xff0c;内存管理还是比较重要的一个环节&#xff0c;理解了它&#xff0c;至少对整个操作系统的工作会有一个初步的轮廓。 虚拟内存 如果你是电子相关专业的&#xff0c;肯定在大学里捣鼓过单片机。 单片…

出口欧盟认证机构为什么推荐CE认证

产品做CE证书要什么好处&#xff0c;CE证书要什么作用&#xff1f; 在中国很多中小企业困扰的是&#xff0c;好不容易走出国门接到来自国外的订单。却因为没有相应的产品安全认证而无法顺利取得订单。或者当产品到达目的地后&#xff0c;因为无法提供相应的产品安全认证证明文件…

网络编程 端口状态都有哪些?

客户端各个状态&#xff1a; 三次握手阶段 CLOSED&#xff08;持续状态&#xff09; 关闭状态 SYN_SENT &#xff08;非常短暂&#xff09; SYN_SENT状态表示请求连接&#xff0c;当你要访问其它的计算机的服务时首先要发个同步信号给该端口&#xff0c;此时状态为SYN_SENT&a…

数据库MySQL —— 存储过程

目录 一、介绍 二、基本语法 三、变量 1. 系统变量 2. 用户自定义变量 3. 局部变量 四、流程控制语句 1. if判断 2. 参数 3. case 4. 循环 4.1 while 4.2 repeat 4.3 loop 五、游标 - cursor 六、条件处理程序 - handler 七、存储函数 一、介绍 存储过…

自学大数据第17天~Hive安装与配置及常用命令

嗨咯,好几天没更新了,你以为我不知道吗? 这几天主要还是学习,学习如何再学习! 简述以下这几天都学习了什么~ MongoDB的命令 GaussDB(for Mongo)集群架构与社区版架构的对比 社区版(副本集架构): mongos(路由) config(记录元数据) shard(负责计算和存储) GaussDB(for Mongo)存…

uni-app--》uni-app的生命周期讲解

&#x1f3cd;️作者简介&#xff1a;大家好&#xff0c;我是亦世凡华、渴望知识储备自己的一名在校大学生 &#x1f6f5;个人主页&#xff1a;亦世凡华、 &#x1f6fa;系列专栏&#xff1a;uni-app &#x1f6b2;座右铭&#xff1a;人生亦可燃烧&#xff0c;亦可腐败&#xf…

数据库的安全性

安全性 安全性保护手段 用户标识与鉴别自主存取控制强制存取控制视图审计和数据加密 数据库的安全性是指保护数据库防止因用户非法使用数据库造成数据泄露、更改或破坏 数据库安全保护分层 物理层人际层网络层操作系统层数据库系统层 物理层的安全性是指计算机系统所位于的节…

银行数字化转型导师坚鹏:银行数据治理和数据质量问题解决

银行数据治理和数据质量问题解决 课程背景&#xff1a; 很多银行存在以下问题&#xff1a; 不知道如何准确理解银保监会数据治理相关政策及要求&#xff1f; 不清楚如何有效解决数据治理及数据质量遇到的重要问题&#xff1f; 科技条线不清楚如何配合业务人员更好地提高数据…

模板方法设计模式(TemplateMethod)

文章目录抽象类语法使用说明注意事项模板方法设计模式代码示例应用抽象类 随着继承层次中一个个新子类的定义&#xff0c;类变得越来越具体&#xff0c;而父类则更一般&#xff0c;更通用。类的设计应该保证父类和子类能够共享特征。有时将一个父类设计得非常抽象&#xff0c;以…

Centos7安装Navicat15中文

1. ubuntu 下制作AppImage镜像 sudo apt-get install libcapstone-devsudo apt-get install cmake git clone https://github.com/keystone-engine/keystone.git cd keystone mkdir build cd build ../make-share.sh sudo make install sudo ldconfigsudo apt-get install rap…

【行为型模式】模板方法模式

文章目录优秀借鉴1、概述2、结构3、实现方式3.1、案例引入3.2、结构分析3.3、具体实现4、模板方法模式优缺点5、应用场景优秀借鉴 黑马程序员Java设计模式详解-模板方法模式概述 1、概述 模板方法模式(Template Method)是一种设计模式&#xff0c;它定义了一个算法的框架&am…

Nacos 2.2.2 发布,优化启动体验和鉴权提示

Nacos 社区近期发布了 2.2.0.1 和 2.2.1 版本&#xff0c;对默认鉴权插件做出了较大的改动&#xff0c;详情查看**风险说明 [ 1] **及 **2.2.1 发布 [ 2] **。由于 Nacos 默认控制台 ui 中默认依赖了 token.secret.key&#xff0c;所以在移除了 token.secret.key 的默认值后&am…

【ROS2指南-9】Bag的record和play操作

目标&#xff1a;记录在某个话题上发布的数据&#xff0c;以便您可以随时回放和检查它。 教程级别&#xff1a;初学者 时间&#xff1a; 10分钟 内容 背景 先决条件 任务 1 设置 2 选择一个主题 3 ros2包记录 4 ros2 包信息 5 ros2包玩 概括 下一步 相关内容 背景 r…

Android 性能优化的重要性~

随着移动设备和应用程序市场不断发展&#xff0c;Android应用程序变得越来越多&#xff0c;对于开发者来说&#xff0c;他们必须使自己的应用程序与其他应用程序相比更加高效和快速&#xff0c;以吸引用户和确保业务成功。而Android用户期望应用程序如同其他设备上的应用程序一…

PHP快速入门02-PHP语言基础

文章目录前言一、 数据类型1.1 String&#xff08;字符串&#xff09;1.2 Integer&#xff08;整型&#xff09;1.3 Float&#xff08;浮点型&#xff09;1.4 Boolean&#xff08;布尔型&#xff09;1.5 Array&#xff08;数组&#xff09;1.6 Object&#xff08;对象&#xff…

[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-5 通关详解 (附靶机搭建教程)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

深入了解Hugging Face Transformers库:NLP的转换之力

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️&#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…