Stream流入门

Stream流:操作集合和数组的工具。

Stream的三类方法:

  1. 获取Stream流:创建一条流水线,并把数据放上去。
  2. 中间方法:流水线上的操作,可以进行多次操作。
  3. 终结方法:一个Stream流只能有一个终结方法,是流水线上的最后一个操作。

获取Stream流的方法:

集合获取Stream流的方法:

default Stream<E> stream()

获取当前集合对象的Stream流。

例:

获取Collection集合的Stream流:

Collection<String> list=new ArrayList<>();Stream<String> s=list.stream();

获取Map集合的Stream流:

Map<String,Integer> map=new HashMap<>();//键流Stream<String> s1=map.keySet().stream();//值流Stream<Integer> s2=map.values().stream();//键值对流Stream<Map.Entry<String,Integer>> s3=map.entrySet().stream();

数组获取Stream流的方法:

public static<T> Stream<T> stream(T[] array)

获取数组的stream流。

public  static<T> Stream<T> of(T... Values)

获取当前数组或可变数据的stream流。

例:

1:

String[] name={“1”,”2”,”3”}Stream<String> nameStream =Arrays.stream(name);

2:

String[] name={“1”,”2”,”3”}Stream<String> nameStream =Stream.of(name);

Stream流的常用API

中间方法

Stream<T> filter(predicate<? super T> predicate)

用于对流中的数据进行过滤。

Stream<T> limit(long maxSize)获取前几个元素。

Stream<T> skip (long n)跳过前几个元素。

Stream<T> distinct()去除流中重复元素。(靠hashcode 和equals方法)

static <T> Stream<T> concat(Stream a,Stream b)

将a和b两个流合为一个流。

例:

List<String> list =new ArrayList<>();List.add(“杨一”);List.add(“杨二”);List.add(“张三”);List.add(“一二三”);list.stream().filter(s->s.startsWith(“杨”)).forEach(s->System.out.println(s));//输出结果:杨一 杨二long a=list.stream().filter(s->s.length()==3).count();System.out.println(a);//输出结果:1

终结方法

void forEach(Consumer action)对此流的每个元素执行遍历操作。

long count() 返回此流中的元素数。

收集Stream流:

作用:就是把Stream流操作后得到的数据转回到数组和集合中去。

收集方法:

toArray 收集成数组,需要使用Object数组接收。

R collect(Collector collector) 开始收集Stream流,指定收集器。(收集为集合)

Collectors工具类提供的收集器方法:

public static<T> Collector toList()

把元素收集到List集合中。

public static<T> Collector toSet()

把元素收集到Set集合中。

public static Collector toMap(Function keyMapper,Funtion valueMapper)

把元素收集到Map集合中。

   Map<String, CourseCategoryTreeDto> courseCategoryTreeDtoMap = courseCategoryTreeDtos.stream().filter(item -> !id.equals(item.getId())).collect(Collectors.toMap(key -> key.getId(), value -> value, (key1, key2) -> key2));//key -> key.getId() 收集到的map以id为主键//value -> value   收集到的map以原来集合中的元素为value//(key1, key2) -> key2)  当键出现重复以新添加值的为准 //如:(key1,value1)(key1,value2) 这两个元素都被stream流收集到新的map中时以                //(key1,value2)为准

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

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

相关文章

Linux交换空间的创建使用

交换空间&#xff1a; 换出&#xff1a;将内存中不常用&#xff08;冷数据&#xff09;的放去硬盘里 换出&#xff1a;内存要使用这部分数据时&#xff0c;将硬盘的这部分数据放入内存 在内存和硬盘上用来交换数据的空间就是交换空间 创建交换空间的步骤 1.去磁盘上创建一个分…

想进大厂,请先想清楚这几个问题

今天被一个小伙伴问&#xff1a;“进大厂难吗&#xff1f;” 我想都不想回答&#xff1a;“简单啊~ 从北京郎家园&#xff0c;坐817或者816&#xff0c;终点站就是大厂。” 小伙伴翻了一个大大的白眼... “我是说工作上的事&#xff01;” 瞬间懂了&#xff0c;工作场所&…

C语言 | Leetcode C语言题解之第47题全排列II

题目&#xff1a; 题解&#xff1a; int* vis;void backtrack(int* nums, int numSize, int** ans, int* ansSize, int idx, int* perm) {if (idx numSize) {int* tmp malloc(sizeof(int) * numSize);memcpy(tmp, perm, sizeof(int) * numSize);ans[(*ansSize)] tmp;return…

OssUtil工具上传文件

安装、上传、下载 1. 安装ossutil sudo -v ; curl https://gosspublic.alicdn.com/ossutil/install.sh | sudo bash2. 配置ossutil ossutil config3. 验证是否已成功安装ossutil ossutil 如果屏幕中输出ossutil所有支持的命令&#xff0c;表明已成功安装ossutil。# 完整上传 os…

ruoyi-nbcio-plus基于vue3的flowable修正加签与跳转的前端问题

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

idea 中导入的项目maven不自动下载依赖包

导入之后不会自动引入依赖包&#xff0c;如下图&#xff0c;external libraries 下没有依赖 解决方案&#xff1a;重新更新下maven的Local repository 即可

MMSeg搭建自己的网络

配置结构 首先&#xff0c;我们知道MMSeg矿机的配置文件很多&#xff0c;主要结构如下图所示。 在configs/_base_下是模型配置、数据集配置、以及一些其他的常规配置和运行配置&#xff0c;四类。 configs/all_config目录下存放&#xff0c;即是将四种配置聚合在一起的一个总…

产品推荐 | BittWare基于Altera Agilex“M FPGA的lA-860m加速卡

01 产品概述 BittWare的lA-860m是一款Altera Agilex“M系列FPGA卡&#xff0c;针对吞吐量和内存密集型应用进行了优化。M 系列 FPGA 具有广泛的内存层次结构&#xff0c;包括集成高带宽存储器 &#xff08;HBM2e&#xff09; 和硬内存片上网络 &#xff08;NoC&#xff09;&am…

自动化测试超详细总结

简介 软件测试是软件开发过程中一个必不可少的环节。传统的软件测试方式通常是手动测试&#xff0c;即由专业的测试人员通过手动操作软件应用程序来验证其功能和性能。然而&#xff0c;这种方式存在许多缺点&#xff0c;例如时间耗费、测试结果不稳定、测试覆盖率不够高等。 为…

百种提权及手段一览系列第3集

特权升级的危险是显而易见的。通过提升权限&#xff0c;攻击者可以绕过网络安全措施&#xff0c;从而损害数据完整性、机密性和系统可用性。对于组织而言&#xff0c;这可能会导致数据泄露、系统停机以及潜在的法律和声誉后果。识别权限升级的迹象并部署预防性网络安全措施对于…

Vue3 + Element-Plus 对接高德地图实现搜索提示选址、点击地图选址、自我定位功能(最新)

Vue3 Element-Plus 对接高德地图实现搜索提示选址、点击地图选址、自我定位功能&#xff08;最新&#xff09; 1、效果展示2、实现代码2.1 GaoDeMap.vue2.2 SystemDialog.vue2.3 UnusedList.vue.vue 1、效果展示 2、实现代码 2.1 GaoDeMap.vue <template><div style…

书生·浦语 大模型(学习笔记-5)XTuner 微调 LLM:1.8B、多模态、Agent

一&#xff1a;两种微调 增量与训练和指令微调的区别 二、数据的一生 原始数据转换为标准格式数据 添加对话模板&#xff0c;直接调用即可&#xff0c;会拼接 三、微调方案 三种加载对比 四、XTuner 五、8GB 显存玩转 LLM 五、InternLM2 1.8B模型&#xff08;相关知识&#x…

GAN 生成对抗神经网络

GAN 文章目录 GANGAN的结构GAN的目标函数GAN的训练GAN的优势和不足优势不足 GAN的结构 GAN的设计灵感来源于博弈论中的零和博弈&#xff08;Zero-sum Game&#xff09;&#xff0c;在零和博弈中&#xff0c;参与双方的收益是完全相反的&#xff0c;一方的收益必然导致另一 方的…

pymilvus执行多向量搜索

pymilvus执行多向量搜索 从 Milvus 2.4 开始&#xff0c;引入了多向量支持和混合搜索框架&#xff0c;单个collection可以支持10个向量字段。不同的向量字段可以表示不同的方面、不同的embedding模型甚至表征同一实体的不同数据模态。该功能在综合搜索场景中特别有用&#xff…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-1.3

前言&#xff1a; 本文是根据哔哩哔哩网站上视频“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”的学习笔记&#xff0c;在这里会记录下正点原子Linux ARM MX6ULL 开发板根据配套的哔哩哔哩学习视频所作的实验和笔记内容。本文大量的引用了正点原子哔哔哩网…

Python的上下文管理器(以PIL库为例)

在Python中&#xff0c;上下文管理器是一种支持上下文管理协议的对象&#xff0c;这种协议包括两个方法&#xff1a;__enter__()和__exit__()。这些方法使对象能够在代码块开始时执行一些设置或初始化工作&#xff08;通过__enter__()&#xff09;&#xff0c;以及在代码块结束…

初学python记录:力扣2739. 总行驶距离

题目&#xff1a; 卡车有两个油箱。给你两个整数&#xff0c;mainTank 表示主油箱中的燃料&#xff08;以升为单位&#xff09;&#xff0c;additionalTank 表示副油箱中的燃料&#xff08;以升为单位&#xff09;。 该卡车每耗费 1 升燃料都可以行驶 10 km。每当主油箱使用了…

new String和直接赋值的一些问题

分析1 我们先看以下代码&#xff1a; String str1 "abc"; // 在常量池中String str2 new String("abc"); // 在堆上System.out.println(str1 str2)以上结果的输出是什么&#xff1f; 输出&#xff1a;false 前置知识&#xff1a; 在JVM中&#xff0c…

C++静态变量

C语言中与“静态”相关的词包括&#xff0c;静态全局变量&#xff0c;静态局部变量和静态函数&#xff0c;关键词是static。C语言中的变量从作用域分&#xff0c;可以分为全局变量和局部变量&#xff1b;从存储方式分&#xff0c;可以分为静态存储方式和动态存储方式。 1. 静态…

电脑怎么拖动文件到想要的位置?电脑上拖拽没了的文件怎么找回

在日常的办公和学习中&#xff0c;电脑文件拖拽操作是每位用户都不可或缺的技能。然而&#xff0c;有时在拖动文件时&#xff0c;可能会因为误操作或其他原因&#xff0c;导致文件消失或移至未知位置。本文将详细解析如何在电脑上轻松拖动文件到指定位置&#xff0c;并为您提供…