Arrays.stream使用方法总结

Arrays.stream使用方法总结

本文介绍Arrays的stream流用法

  • Arrays.stream使用方法总结
  • 对数组简单操作
    • 最大值max
    • 最小值min
    • 平均值average
    • 数组长度count
    • 数组去重后长度distinct
    • 数组排序sorted
  • 对数组复杂操作
    • 获得intStream对象
    • 匹配allMatch
    • 匹配anyMatch
    • 过滤filter
    • 限制数量limit
    • 遍历操作收纳collect
    • 获取第一个元素findFirst
    • 跳过skip,枚举foreach
    • 枚举map

对数组简单操作

创建一个数组

int[] nums = new int[]{1,4,8,11,6,3,5,10,1,0};

最大值max

int maxv = Arrays.stream(nums).max().getAsInt();
// 11

最小值min

int minv = Arrays.stream(nums).min().getAsInt();
// 0

平均值average

double avg = Arrays.stream(nums).average().getAsDouble();
// 5.0

数组长度count

long cnt = Arrays.stream(nums).count();
// 7

数组去重后长度distinct

int[] arr = Arrays.stream(nums).distinct().toArray();
System.out.println(Arrays.toString(arr));
// [1, 4, 8, 11, 10, 0]

数组排序sorted

int[] sortedArr = Arrays.stream(nums).sorted().toArray();
System.out.println(Arrays.toString(sortedArr));
// [0, 1, 1, 4, 8, 10, 11]

对数组复杂操作

获得intStream对象

IntStream intStream = Arrays.stream(nums);
IntStream intStream = IntStream.of(1,4,8,11,10,1,0);

这个对象只能使用一次,重复使用会报错

Exception in thread "main" java.lang.IllegalStateException: stream has already been operated upon or closedat java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:229)

这也说明Stream流是线程安全的

匹配allMatch

全部成立才返回true

boolean allMatch = intStream.allMatch(x -> x > 0);
// false

匹配anyMatch

一个成立就返回true

boolean anyMatch = intStream.anyMatch(x -> x == 10);
// true

过滤filter

对数组进行筛选

int[] arr5 = intStream.filter(x -> x >= 5).toArray();
// [8, 11, 10]

限制数量limit

int[] arrLim = intStream.limit(5).toArray();
// [1, 4, 8, 11, 10]

遍历操作收纳collect

collect()接收三个参数,分别是Supplier supplier,ObjIntConsumer accumulator,BiConsumer<R, R> combiner
三者的关系可以用遍历,操作,收纳来概括

R result = supplier.get();
for (int element : this stream)accumulator.accept(result, element);
return result;

将数组nums中元素和对应字母以kv值的方式放到map中

HashMap<String, Integer> map = intStream.collect(HashMap<String, Integer>::new, (m, x) -> m.put(new String(new byte[]{(byte) ('A' + x)}), x), Map::putAll);
// {A=0, B=1, E=4, I=8, K=10, L=11}

把int[]转成List,如果是Integer[]转List直接asList()即可,但是int的话就不行,collect提供了一个转换的方法

ArrayList<Integer> list = intStream.collect(ArrayList<Integer>::new, List::add, List::addAll);
// [1, 4, 8, 11, 10, 1, 0]

获取第一个元素findFirst

int x = intStream.findFirst().getAsInt();
// 1

跳过skip,枚举foreach

注意foreach不支持提前退出操作

intStream.skip(5).forEach(System.out::println);
// 1
// 0

枚举map

map和foreach的区别是,map一般作为其他操作的前置操作,执行一些简单的逻辑

int[] arr = intStream.map(x -> x > 5 ? 1 : 0).toArray();
// [0, 0, 1, 1, 1, 0, 0]

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

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

相关文章

AI大模型时代来临:企业如何抢占先机?

AI大模型时代来临:企业如何抢占先机? 2023年,被誉为大模型元年,AI大模型的发展如同一股不可阻挡的潮流,正迅速改变着我们的工作和生活方式。从金融到医疗,从教育到制造业,AI大模型正以其强大的生成能力和智能分析,重塑着行业的未来。 智能化:企业核心能力的转变 企…

世界智能产业博览会开幕 - 天空卫士汽车行业方案入选优秀案例

6月20日&#xff0c;以“智行天下、能动未来”为主题的2024世界智能产业博览会在国家会展中心&#xff08;天津&#xff09;开幕。主席向博览会致贺信并指出&#xff1a;中国高度重视人工智能发展&#xff0c;积极推动互联网、大数据、人工智能和实体经济深度融合&#xff0c;培…

netty系列(三)client启动

client启动&#xff1a; server是在bootstrap.bind的时候启动&#xff0c;而同样&#xff0c;client是在bootstrap.connect时启动&#xff0c;流程都是一样的&#xff1a;创建NioSocketChannel&#xff0c;和workgroup中的一个eventloop绑定起来&#xff0c;然后再执行connect…

[Python学习篇] Python函数

定义函数 语法&#xff1a;使用关键字 def def 函数名(参数): 代码1 代码2 ...... 调用函数 语法&#xff1a; 函数名(参数) 注意&#xff1a;不同的需求&#xff0c;参数可有可无。在Python中&#xff0c;函数必须先定义后使用 示例&#xff1a; # 定义函数 d…

Linux 程序打包

参考文献&#xff1a; Linux(ubuntu)下打包C代码并运行于其他ubuntu上linux C打包程序总结Linux shell 中获取当前目录的方法Linux shell路径变量出现空格时的处理方法 假设编译了一个 cmd 可执行文件&#xff0c;想要把它交给其他人运行。 找到动态库 首先新建一个文件夹 …

csdn如何建立专栏,并且把已发布的文章,放到专栏里

不会在csdn上建立专栏&#xff0c;管理自己的博客&#xff1f; 建立了专栏&#xff0c;不知道该怎么放入文章&#xff1f; 本文将一步步带你解决这些问题。 我是蚊子码农&#xff0c;欢迎各位的点赞、关注和收藏&#xff0c;有了你们的激励&#xff0c;我会带来更好的作品。…

聚焦 Navicat 17 新特性 | 让用户界面交互更丝滑

随着 Navicat 17 的发布&#xff0c;引起业界热烈反响和深入讨论。早前&#xff0c;我们介绍了 Navicat 17 《模型设计创新与优化​​​​​​​》与《查询与配置》的新特性。此外&#xff0c;Navicat 在用户界面交互方面进行了显著优化&#xff0c;新增了一系列实用的功能&…

(javascript)为什么await在forEach中不生效?

转载&#xff1a;为啥await在forEach中不生效&#xff1f;-腾讯云开发者社区-腾讯云 (tencent.com) 两天要写循环遍历请求接口&#xff0c;于是就在forEach中用到了await&#xff0c;但是根本不是我想要的啊&#xff01; 于是各种查&#xff0c;各种搜&#xff0c;终于有点明…

《后端程序猿 · 基于 Lettuce 实现缓存容错策略》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; 近期刚转战 CSDN&#xff0c;会严格把控文章质量&#xff0c;绝不滥竽充数&#xff0c;如需交流&#xff…

机器学习辅助的乙醇浓度检测

目录 1.为什么要机器学习 2. 神经网络一般组成 3.BP神经网络工作过程 4.评价指标 5.实操代码 1.为什么要用机器学习 人工分析大量的谐振模式&#xff0c;建立各种WGM的响应与未知目标之间的关系&#xff0c;是一个很大的挑战。机器学习(ML)能够自行识别全谱的全部特征。作为…

如何在Lazada平台快速出单?测评助力商家突破销量瓶颈

Lazada在短短的几年里已经发展成了东南亚地区最大的在线购物网站之一 &#xff0c;很多商家也想要在这样一个大的跨境平台上发展。那么&#xff0c;对于希望在Lazada平台上大展拳脚的商家而言&#xff0c;出单是否容易呢? ​一、Lazada出单容易吗? Lazada出单的难易程度并非…

漫步5G-A City,一份独属于上海的浪漫

作家亨利詹姆斯曾写道&#xff0c;“城市漫步&#xff0c;让我接触到了这个世界上最好的东西”。 用漫无目的地行走&#xff0c;来体验和观察一座城市&#xff0c;上海凭借丰富多元的文化特质&#xff0c;成为citywalk这种浪漫生活方式的流行地。 无论你是漫步在美术馆、画廊林…

数据抓取技术在视频内容监控与快速读取中的应用

引言 在数字化时代&#xff0c;视频内容的快速读取和监控对于内容提供商来说至关重要。思通数科的OPEN-SPIDER抓取技术为这一需求提供了高效的解决方案。 OPEN-SPIDER技术概述 OPEN-SPIDER是思通数科开发的一种先进的数据抓取技术&#xff0c;它能够&#xff1a; - 高效地从各…

ananconda 和 pip傻傻分不清???

Anaconda 和 pip 都是 Python 编程语言中用于管理包&#xff08;libraries&#xff09;和环境的工具&#xff0c;但它们在功能和设计理念上有所不同。 Anaconda Anaconda 是一个面向科学计算的发行版&#xff0c;包括了 Python 语言和许多常用的科学计算及数据分析库。Anacon…

Stable Diffusion【基础篇】:降噪强度(denoising strength)

提到降噪强度&#xff08;denoising strength&#xff09;&#xff0c;大家一定不会陌生&#xff0c;这个参数是图生图中最关键的参数之一。今天在Stable Diffusion Art网站看到一篇介绍降噪强度&#xff08;denoising strength&#xff09;的文章&#xff08;地址&#xff1a;…

uniapp返回上一页并传递参数,上一页接收参数并刷新数据

因为navigateBack不支持携带参数&#xff0c;所以只能触发一个自定义事件&#xff0c;并传递参数 params 给上一页。 // 触发自定义事件&#xff0c;并返回上一页 uni.$emit(refreshPreviousPage, params); //返回上一页 uni.navigateBack({ delta: 1 }); 在上一页的 onShow …

vcanfd配置与使用

canfd CAN FD (Controller Area Network Flexible Data-rate) 是传统 CAN (Controller Area Network) 的升级版本&#xff0c;旨在满足现代汽车电子系统和工业自动化中对更高数据速率和更大数据负载的需求。以下是对 CAN FD 的详细介绍&#xff1a; CAN 和 CAN FD 的背景 CA…

从hugging face 下模型

支持国内下载hugging face 的东西 下模型权重 model_id 是红色圈复制的 代码 记得设置下载的存储位置 import os from pathlib import Path from huggingface_hub import hf_hub_download from huggingface_hub import snapshot_downloadmodel_id"llava-hf/llava-v1…

C#——MD5 base64加密-base64加密解密

MD5 base64加密 在C#中&#xff0c;MD5是一个不可逆的加密算法&#xff0c;因为它是散列函数&#xff0c;用于创建信息的唯一指纹&#xff08;也称为摘要&#xff09;。不过&#xff0c;可以使用MD5进行加密&#xff0c;然后使用Base64对结果进行编码。但是&#xff0c;请注意…

[AI Perplexica] 深入解析,AI 架构揭秘

[AI Perplexica] AI驱动的开源搜索引擎 上一篇文章&#xff0c;我们对 Perplexica 做了个基本介绍&#xff0c;包括特点&#xff0c;以及如何安装。 今天&#xff0c;我们来深入看下 Perplexica 的架构。 Perplexica 的架构 Perplexica 的架构由以下关键组件组成&#xff1…