java stream流的使用
Java中的Stream API是Java 8引入的一个重要特性,它提供了对集合对象进行各种非常便利、高效的聚合操作(aggregate operation)或大批量数据操作(bulk data operation)。Stream API借助于Lambda表达式,极大地提高了编程效率和程序可读性。以下是Stream流的一些基本使用方式:
1. Stream的创建
- 通过集合的
stream()方法创建流:List<String> list = Arrays.asList("a", "b", "c"); Stream<String> stream = list.stream(); - 通过数组的
Arrays.stream()方法创建流:int[] array = {1, 3, 5, 6, 8}; IntStream stream = Arrays.stream(array); - 使用
Stream的静态方法of()、iterate()、generate()创建流:Stream<Integer> stream = Stream.of(1, 2, 3, 4, 5, 6); Stream<Integer> stream2 = Stream.iterate(0, (x) -> x + 3).limit(4); Stream<Double> stream3 = Stream.generate(Math::random).limit(3);
2. Stream的操作
- 遍历/匹配:使用
forEach、find、match等操作进行遍历或匹配元素。list.stream().filter(x -> x > 6).forEach(System.out::println); - 筛选:使用
filter进行元素的筛选。list.stream().filter(name -> name.startsWith("张")).filter(name -> name.length() == 3); - 聚合:使用
max、min、count等进行聚合操作。Optional<Integer> max = list.stream().max(Comparator.comparing(String::length)); - 映射:使用
map、flatMap进行元素的映射或扁平化映射。List<String> strList = Arrays.stream(strArr).map(String::toUpperCase).collect(Collectors.toList()); - 规约:使用
reduce进行元素的规约操作。Optional<Integer> sum = list.stream().reduce(Integer::sum); - 收集:使用
collect进行元素的收集操作,如toList、toSet、toMap等。List<Integer> listNew = list.stream().filter(x -> x % 2 == 0).collect(Collectors.toList()); - 排序:使用
sorted进行元素的排序。list.stream().sorted(Comparator.comparing(String::length)); - 去重、合并:使用
distinct进行去重,skip、limit进行合并操作。List<String> distinctList = list.stream().distinct().collect(Collectors.toList());
3. Stream的特性
- Stream不存储数据,而是按照特定的规则对数据进行计算,一般会输出结果。
- Stream不会改变数据源,通常情况下会产生一个新的集合或一个值。
- Stream具有延迟执行特性,只有调用终端操作时,中间操作才会执行。
以上是Stream流的基本使用方式,通过这些操作,可以对集合进行高效、简洁的处理。
相关文章:
java stream流的使用
Java中的Stream API是Java 8引入的一个重要特性,它提供了对集合对象进行各种非常便利、高效的聚合操作(aggregate operation)或大批量数据操作(bulk data operation)。Stream API借助于Lambda表达式,极大地…...
(JVM)带你一起研究JVM的语法糖功能 和 JVM的即时编译器
1. 语法糖 所谓的语法糖,其实就是指java编译器把*.java源码编译为*.class字节码的过程中,自动生成和转换的一些代码,主要是为了减轻程序员的负担,算是java编译器给我们第一个额外福利 以下代码的分析,借助了javap工具…...
【Linux】ClickHouse 部署
搭建Clickhouse集群时,需要使用Zookeeper去实现集群副本之间的同步,所以需要先搭建zookeeper集群 1、卸载 # 检查有哪些clickhouse依赖包: [rootlocalhost ~]# yum list installed | grep clickhouse# 移除依赖包: [rootlocalho…...
js的小知识
以下是一些 JavaScript 的小知识点,适合不同水平的开发者: 1. 变量声明 使用 let、const 和 var 声明变量。let 和 const 块级作用域,而 var 是函数作用域。const 声明的变量不可重新赋值,但对象的属性仍然可以修改。 2. 箭头函…...
一些swift问题
写得比较快,如果有问题请私信。 序列化和反序列化 反序列化的jsonString2只是给定的任意json字符串 private func p_testDecodeTable() {let arr ["recordID123456", "recordID2"]// 序列化[string] -> json datalet jsonData try? JSO…...
Nginx安装配置详解
Nginx Nginx官网 Tengine翻译的Nginx中文文档 轻量级的Web服务器,主要有反向代理、负载均衡的功能。 能够支撑5万的并发量,运行时内存和CPU占用低,配置简单,运行稳定。 写在前 uWSGI与Nginx的关系 1. 安装 Windows 官网 Stabl…...
汽车免拆诊断案例 | 2010款起亚赛拉图车发动机转速表指针不动
故障现象 一辆2010款起亚赛拉图车,搭载G4ED 发动机,累计行驶里程约为17.2万km。车主反映,车辆行驶正常,但组合仪表上的发动机转速表指针始终不动。 故障诊断 接车后进行路试,车速表、燃油存量表及发动机冷却温度…...
在ubuntu上安装最新版的clang
方法一: 执行如下的命令: # 下载安装脚本wget https://apt.llvm.org/llvm.sh chmod x llvm.sh # 开始下载, 输入需要安装的版本号。 sudo ./llvm.sh <version number>方法二 添加软件下载源。 请根据自己的Ubuntu系统版本添加&…...
使用Django REST framework构建RESTful API
使用Django REST framework构建RESTful API Django REST framework简介 安装Django REST framework 创建Django项目 创建Django应用 配置Django项目 创建模型 迁移数据库 创建序列化器 创建视图 配置URL 配置全局URL 配置认证和权限 测试API 使用Postman测试API 分页 过滤和排序…...
「Mac畅玩鸿蒙与硬件14」鸿蒙UI组件篇4 - Toggle 和 Checkbox 组件
在鸿蒙开发中,Toggle 和 Checkbox 是常用的交互组件,分别用于实现开关切换和多项选择。Toggle 提供多种类型以适应不同场景,而 Checkbox 支持自定义样式及事件回调。本篇将详细介绍这两个组件的基本用法,并通过实战展示它们的组合应用。 关键词 Toggle 组件Checkbox 组件开…...
Kotlin协程suspend的理解
suspend修饰符,它可以告诉编译器,该函数需要在协程中执行。作为开发者,您可以把挂起函数看作是普通函数,只不过它可能会在某些时刻挂起和恢复而已。协程的挂起就是退出方法,等到一定条件到来会重新执行这个方法&#x…...
基于AI深度学习的中医针灸实训室腹针穴位智能辅助定位系统开发
在中医针灸的传统治疗中,穴位取穴的精确度对于治疗效果至关重要。然而,传统的定位方法,如体表标志法、骨度折量法和指寸法,由于观察角度、个体差异(如人体姿态和皮肤纹理)以及环境因素的干扰,往…...
51单片机教程(二)- 创建项目
1 创建项目 创建项目存储文件夹:C51Project 打开Keil5软件,选择 Project -> New uVision Project: 选择项目路径,即刚才创建的文件夹 选择芯片,选择 Microchip(微型集成电路)࿰…...
Rust 图形界面开发——使用 GTK 创建跨平台 GUI
第五章 图形界面开发 第一节 使用 GTK 创建跨平台 GUI GTK(GIMP Toolkit)是一个流行的开源跨平台图形用户界面库,适用于创建桌面应用程序。结合 Rust 的 gtk-rs 库,开发者能够高效地构建现代化 GUI 应用。本节将详细探讨 GTK 的…...
Hellinger Distance(赫林格距离)
Hellinger Distance(赫林格距离)是一种用于衡量两个概率分布相似度的距离度量。它通常用于概率统计、信息论和机器学习中,以评估两个分布之间的相似性。Hellinger距离的值介于0和1之间,其中0表示两个分布完全相同,1表示…...
【系统架构设计师】七、设计模式
7.1 设计模式概述 设计经验在实践者之间日益广泛地利用,描述这些共同问题和解决这些问题的方案就形成了所谓的模式。 7.1.1 设计模式的历史 建筑师Christopher Alexander首先提出了模式概念,他将模式分为了三个部分: 特定的情景ÿ…...
新工具可绕过 Google Chrome 的新 Cookie 加密系统
一位研究人员发布了一款工具,用于绕过 Google 新推出的 App-Bound 加密 cookie 盗窃防御措施并从 Chrome 网络浏览器中提取已保存的凭据。 这款工具名为“Chrome-App-Bound-Encryption-Decryption”,由网络安全研究员亚历山大哈格纳 (Alexander Hagenah…...
模型拆解(三):EGNet、FMFINet、MJRBM
文章目录 一、EGNet1.1编码器:VGG16的扩展网络 二、EMFINet2.1编码器:三分支并行卷积编码器2.2CFFM:级联特征融合模块2.3Edge Module:突出边缘提取模块2.4Bridge Module:桥接器2.5解码器:深度特征融合解码器…...
齐次线性微分方程的解的性质与结构
内容来源 常微分方程(第四版) (王高雄,周之铭,朱思铭,王寿松) 高等教育出版社 齐次线性微分方程定义 d n x d t n a 1 ( t ) d n − 1 x d t n − 1 ⋯ a n − 1 ( t ) d x d t a n ( t ) x 0 \frac{\mathrm{d}^nx}{\mathrm{d}t^n} a_1(t)\frac{\mathrm{d}^{n-1}x}{\math…...
Python-Celery-基础用法总结-安装-配置-启动
文章目录 1.安装 Celery2.配置 Celery3.启动 Worker4.调用任务5.任务装饰器选项6.任务状态7.定期任务8.高级特性9.监控和管理 Celery 是一个基于分布式消息传递的异步任务队列。它专注于实时操作,但也支持调度。Celery 可以与 Django, Flask, Pyramid 等 Web 框架集…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...
Linux操作系统共享Windows操作系统的文件
目录 一、共享文件 二、挂载 一、共享文件 点击虚拟机选项-设置 点击选项,设置文件夹共享为总是启用,点击添加,可添加需要共享的文件夹 查询是否共享成功 ls /mnt/hgfs 如果显示Download(这是我共享的文件夹)&…...
验证redis数据结构
一、功能验证 1.验证redis的数据结构(如字符串、列表、哈希、集合、有序集合等)是否按照预期工作。 2、常见的数据结构验证方法: ①字符串(string) 测试基本操作 set、get、incr、decr 验证字符串的长度和内容是否正…...
RabbitMQ 各类交换机
为什么要用交换机? 交换机用来路由消息。如果直发队列,这个消息就被处理消失了,那别的队列也需要这个消息怎么办?那就要用到交换机 交换机类型 1,fanout:广播 特点 广播所有消息:将消息…...
