Java 的 Stream

一、创建 Stream

1.1、创建 Stream 流

1.1.1、List 集合获取 Stream 流

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

1.1.2、Map 集合获取 stream 流

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

1.1.3、数组获取 Stream 流

String[] strs = {"A", "B", "C"};
Stream<String> s5 = Arrays.stream(strs);
Stream<String> s6 = Stream.of(strs);

1.2、方法分类

1.2.1、中间方法

1.2.2、终结方法

1.2.3、收集方法 

 二、代码操作

public class MyUser {private Integer id;private String name;private Integer score;private List<String> menus;public MyUser() {}public MyUser(Integer id, String name, Integer score, List<String> menus) {this.id = id;this.name = name;this.score = score;this.menus = menus;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getScore() {return score;}public void setScore(Integer score) {this.score = score;}public List<String> getMenus() {return menus;}public void setMenus(List<String> menus) {this.menus = menus;}@Overridepublic String toString() {return "Merchant{" +"id=" + id +", name='" + name + '\'' +", score=" + score +", menus=" + menus +'}';}
}
    public static void main(String[]args){MyUser myUser1 = new MyUser(1,"AA",11, Arrays.asList("A","B","C"));MyUser myUser2 = new MyUser(2,"BB",22, Arrays.asList("D","E","F"));MyUser myUser3 = new MyUser(3,"CC",19, Arrays.asList("O","P","H"));MyUser myUser4 = new MyUser(4,"DD",33, Arrays.asList("K","J","I"));MyUser myUser5 = new MyUser(5,"EE",39, Arrays.asList("X","M","N"));List<MyUser> list = Arrays.asList(myUser1,myUser2,myUser3,myUser4,myUser5);// 遍历plist.stream().forEach(s -> System.out.println(s));// 取最大值、最小值Comparator<? super MyUser> comparator = Comparator.comparing(MyUser::getScore);Optional<MyUser> max = list.stream().max(comparator);Optional<MyUser> min = list.stream().min(comparator);System.out.println("max: "+max);System.out.println("min: "+min);// 单个属性加减乘除,生成新集合。List<MyUser> collect1 = list.stream().map(x -> {x.setScore(x.getScore()+100);return x;}).collect(Collectors.toList());System.out.println("collect1: "+collect1);// 过滤元素 对原集合的成员的属性修改list.stream().filter(x->x.getId()>2).forEach(x -> {x.setName(x.getName()+100);});System.out.println("list22: "+list);// 统计//统计员工人数Long count = list.stream().collect(Collectors.counting());//求平均工资Double average = list.stream().collect(Collectors.averagingDouble(MyUser::getScore));//求最高工资Optional<Integer> max2 = list.stream().map(MyUser::getScore).collect(Collectors.maxBy(Integer::compare));//求工资之和Integer sum = list.stream().collect(Collectors.summingInt(MyUser::getScore));//一次性统计所有信息DoubleSummaryStatistics collect = list.stream().collect(Collectors.summarizingDouble(MyUser::getScore));System.out.println("统计员工人数:"+count);System.out.println("求平均工资:"+average);System.out.println("求最高工资:"+max2);System.out.println("求工资之和:"+sum);System.out.println("一次性统计所有信息:"+collect);// 过滤后 转为 MapMap map =list.stream().filter(s->s.getId()>3).collect(Collectors.toMap(s->s.getId(),y->y));System.out.println("map:"+map);}

 

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

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

相关文章

R语言中的函数24:Combinat:combn(), permn()

介绍 combinat中的combn()和permn()函数可以得到所有的排列组合的情况 combn()函数 combn(x, m, funNULL, simplifyTRUE, …)x – 组合的向量源m – 要取的元素的数量fun – 应用于每个组合的函数(可能为空)simplify – 逻辑的&#xff0c;如果是FALSE&#xff0c;返回一个列…

爬虫如何应对网站的反爬机制?如何查找user-agent对应的值

import requestsurl https://movie.douban.com/top250 response requests.get(url) # 查看结果 print(response)在requests使用一文中我们有讲到&#xff0c;当状态码不是200时表示爬虫不可用&#xff0c;也就是说我们获取不到网页源代码。但是我们还是可以挣扎一下&#xff…

数据结构----哈夫曼树

这里写目录标题 基本概念引子基本概念各种路径长度各种带权路径长度结点的带权路径长度树的带权路径长度哈夫曼树 哈夫曼树的构造理论基础构造思想总结 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录二级目录二级目录 一级目录二级目录…

云原生K8S------Yaml文件详解

目录 一&#xff1a;K8S支持的文件格式 1&#xff0c;yaml和json的主要区别 2&#xff0c;YAML语言格式 二&#xff1a;yuml 1、查看 api 资源版本标签 2、写一个yaml文件demo 3、创建service服务对外提供访问并测试 4、详解k8s中的port 三&#xff1a;文件生成 1、kubec…

32位M0核单片机XL32F003芯片特征和功能介绍

XL32F003 系列微控制器采用高性能的 32 位 ARMCortex- M0 内核&#xff0c;宽电压工作范围的MCU。嵌入高达64 Kbytes flash和8 Kbytes SRAM存储器&#xff0c;最高工作频率32 MHz。包含多种不同封装类型多款产品。芯片集成多路I2C、SPI、 USART等通讯外设&#xff0c;1路12 bit…

FPGA应用学习笔记----CORDIC 算法和小结

加减移位操作来运算三角函数&#xff0c;开根号&#xff0c;求对数 圆周旋转模式

MySQL数据库表的增删查改 - 进阶

一&#xff0c;数据库约束 1.1 约束对象 not null - 该列不能为空unique - 保证该列的每一行都不一样default - 规定没有给列赋值时的默认值&#xff08;自定义&#xff09;primary key - not null 和 unique 的结合&#xff0c;会给该列添加一个索引&#xff0…

Java-方法

在编程中&#xff0c;我们也可以将频繁使用的代码封装成"帖子"(方法)&#xff0c;需要时直接拿来链接 方法就是一个代码片段. 类似于 C 语言中的 “函数” 方法定义 修饰符 返回值类型 方法名称([参数类型 形参 …]){ 方法体代码; [return 返回值]; } 这里比得C语言…

【ES6】深入理解ES6(1)

一、块级作用域绑定 var声明及变量提升机制 二、字符串和正则表达式 字符串&#xff08;String&#xff09;是JavaScript6大原始数据类型。其他几个分别是Boolean、Null、Undefined、Number、Symbol&#xff08;es6新增&#xff09;。 更好的Unicode支持 1. UTF-16码位 字…

【Hystrix技术指南】(4)故障切换的运作流程

[每日一句] 也许你度过了很糟糕的一天&#xff0c;但这并不代表你会因此度过糟糕的一生。 [背景介绍] 分布式系统的规模和复杂度不断增加&#xff0c;随着而来的是对分布式系统可用性的要求越来越高。在各种高可用设计模式中&#xff0c;【熔断、隔离、降级、限流】是经常被使…

接口测试之Jmeter+Ant+Jenkins接口自动化测试平台

平台简介 一个完整的接口自动化测试平台需要支持接口的自动执行&#xff0c;自动生成测试报告&#xff0c;以及持续集成。Jmeter支持接口的测试&#xff0c;Ant支持自动构建&#xff0c;而Jenkins支持持续集成&#xff0c;所以三者组合在一起可以构成一个功能完善的接口自动化…

【数学建模】--时间序列分析

时间序列分析概念与时间序列分解模型 定义&#xff1a;时间序列也称动态序列&#xff0c;是指将某种现象的指标数值按照时间顺序排列而成的数值序列。时间序列分析大致可分成三大部分&#xff0c;分别是描述过去&#xff0c;分线规律和预测未来&#xff0c;本讲将主要介绍时间序…

两天入门Linux、搭建Spring环境 第一天

一、Linux简介 1.什么是Linux 一个操作系统&#xff0c;未来公司里面会用到、接触的新操作系统。 2.为什么学Linux (1)个人职务需要&#xff0c;肯定会接触到Linux (2)职业发展&#xff0c;以后的发展肯定需要掌握Linux的许多使用方法 3.学哪些内容 (1)Linux基本介绍 (2)…

圆圈中最后剩下的数字——剑指 Offer 62

文章目录 题目描述解法一题目描述 解法一 class Solution

本地构建包含java和maven的镜像

目录 1.前提条件 2.下载 2.1.创建Dockerfile 3.构建镜像 参考文章 1.前提条件 本地环境需要的系统和软件 win10 Docker Desktop Powershell 图1 Win10安装Docker后&#xff0c;直接在Powershell使用Docker命令 有些Developer不习惯win10系统&#xff0c;却想要使用Lin…

【设计模式】装饰器模式

装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其结构。这种类型的设计模式属于结构型模式&#xff0c;它是作为现有的类的一个包装。 装饰器模式通过将对象包装在装饰器类中&#xff0c;以便动态地修改其行为…

【Linux命令行与Shell脚本编程】第十九章 正则表达式

Linux命令行与Shell脚本编程 第十九章 正则表达式 文章目录 Linux命令行与Shell脚本编程 第十九章 正则表达式九.正则表达式9.1.正则表达式基础9.1.1.正则表达式的类型9.2.定义BRE模式9.2.1.普通文本9.2.2.特殊字符 9.2.3.锚点字符锚定行首^锚定行尾$组合锚点 9.2.4.点号字符\.…

OpenStack-Y版安装部署

OpenStack-Y版安装部署 目录 OpenStack-Y版安装部署 1、环境准备 1.1 环境简介1.2 配置hosts解析(所有节点)1.3 配置时间同步1.4 安装openstack客户端(控制节点执行)1.5 安装部署MariaDB(控制节点执行)1.6 安装部署RabbitMQ(控制节点执行)1.7 安装部署Memcache(控制节点执行)2、…

D. Andrey and Escape from Capygrad Round 892 (Div. 2) 1859D

Problem - D - Codeforces 题目大意&#xff1a;在一个从0到1e9的数轴上&#xff0c;有n个传送门&#xff0c;每个传送门有4个参数&#xff0c;l,r,a,b&#xff0c;可以从[l,r]之间的任意内进入传送门&#xff0c;并传送到[a,b]之间的任意位置&#xff0c;[l,r]一定包含[a,b]&…