Java的stream流

stream流常用操作,当作笔记,有更好玩的再加!

package com.azure.stream;import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
import java.util.stream.Collectors;public class ListCalculate {public static void main(String[] args) {List<Money> moneyList = getMoneyList();// List中的对象属性 求和int sumInt = moneyList.stream().mapToInt(Money::getAmountInt).sum();long sumLong = moneyList.stream().mapToLong(Money::getAmountLong).sum();double sumDouble = moneyList.stream().mapToDouble(Money::getAmountDouble).sum();BigDecimal sumBigDecimal = moneyList.stream().map(Money::getAmountBigDecimal).reduce(BigDecimal.ZERO, BigDecimal::add);// List中的对象属性 求最大值int maxInt = moneyList.stream().mapToInt(Money::getAmountInt).max().getAsInt();long maxLong = moneyList.stream().mapToLong(Money::getAmountLong).max().getAsLong();double maxDouble = moneyList.stream().mapToDouble(Money::getAmountDouble).max().getAsDouble();BigDecimal maxBigDecimal = moneyList.stream().map(Money::getAmountBigDecimal).reduce(BigDecimal.ZERO, BigDecimal::max);// List中的对象属性 求最小值  注意BigDecimalint minInt = moneyList.stream().mapToInt(Money::getAmountInt).min().getAsInt();long minLong = moneyList.stream().mapToLong(Money::getAmountLong).min().getAsLong();double minDouble = moneyList.stream().mapToDouble(Money::getAmountDouble).min().getAsDouble();BigDecimal minBigDecimal = moneyList.stream().map(Money::getAmountBigDecimal).reduce(BigDecimal.ZERO, BigDecimal::min);BigDecimal minBigDecimal2 = moneyList.stream().map(Money::getAmountBigDecimal).min(BigDecimal::compareTo).get();// List中的对象属性 求平均值double averageInt = moneyList.stream().mapToInt(Money::getAmountInt).average().getAsDouble();double averageLong = moneyList.stream().mapToLong(Money::getAmountLong).average().getAsDouble();double averageDouble = moneyList.stream().mapToDouble(Money::getAmountDouble).average().getAsDouble();BigDecimal averageBigDecimal = moneyList.stream().map(Money::getAmountBigDecimal).reduce(BigDecimal.ZERO, BigDecimal::add).divide(BigDecimal.valueOf(moneyList.size()), 2, RoundingMode.HALF_UP);// List中的对象属性 分组Map<String, List<Money>> map = moneyList.stream().collect(Collectors.groupingBy(Money::getType));System.out.println("===分组:===");map.forEach((k, v) -> System.out.println(k));// List中的对象属性 排序// 降序-递减List<Money> paiXuDesc = moneyList.stream().sorted(Comparator.comparing(Money::getAmountInt).reversed()).collect(Collectors.toList());// 升序-递增List<Money> paiXuAsc = moneyList.stream().sorted(Comparator.comparing(Money::getAmountInt)).collect(Collectors.toList());System.out.println("===排序:升序-递增===");paiXuAsc.forEach(list -> System.out.println(list.getAmountInt()));// 过滤System.out.println("===过滤:===");List<Money> guoLv = moneyList.stream().filter(list -> list.getAmountInt() == 123).collect(Collectors.toList());guoLv.forEach(list -> System.out.println(list.getType()));// 去重System.out.println("===去重:===");List<Money> quChoNg = moneyList.stream().distinct().collect(Collectors.toList());quChoNg.forEach(list -> System.out.println(list.getType()));// 分页System.out.println("===分页:===");int page = 2;int size = 3;List<Money> fenYe = moneyList.stream().skip((page - 1) * size).limit(size).collect(Collectors.toList());System.out.println(fenYe);// 转map:注意这里的key不要重复System.out.println("===转map:===");Map<String, Integer> listToMap = moneyList.stream().collect(Collectors.toMap(Money::getType, Money::getAmountInt));listToMap.forEach((k, v) -> {System.out.println(k);System.out.println(v);});// 取出某一字段数据System.out.println("===取出某一字段数据:===");List<String> typeList = moneyList.stream().map(Money::getType).collect(Collectors.toList());typeList.forEach(System.out::println);// 按某个字段分组(map无序,linkedMap有序)System.out.println("===按某个字段分组:===");List<List<Money>> newList = new ArrayList<>();moneyList.stream().collect(Collectors.groupingBy(Money::getType, LinkedHashMap::new, Collectors.toList())).forEach((k, v) -> newList.add(v));System.out.println(newList);}private static List<Money> getMoneyList() {List<Money> moneyList = new ArrayList<>();
//        moneyList.add(new Money("美金", 123, 741L, 369.85, new BigDecimal(321)));moneyList.add(new Money("美金", 123, 741L, 369.85, new BigDecimal(321)));moneyList.add(new Money("英镑", 456, 852L, 258.74, new BigDecimal(654)));
//        moneyList.add(new Money("英镑", 789, 963L, 147.96, new BigDecimal(987)));return moneyList;}
}class Money {private String type;private int amountInt;private long amountLong;private double amountDouble;private BigDecimal amountBigDecimal;public Money(String type, int amountInt, long amountLong, double amountDouble, BigDecimal amountBigDecimal) {this.type = type;this.amountInt = amountInt;this.amountLong = amountLong;this.amountDouble = amountDouble;this.amountBigDecimal = amountBigDecimal;}public String getType() {return type;}public void setType(String type) {this.type = type;}public int getAmountInt() {return amountInt;}public void setAmountInt(int amountInt) {this.amountInt = amountInt;}public long getAmountLong() {return amountLong;}public void setAmountLong(long amountLong) {this.amountLong = amountLong;}public double getAmountDouble() {return amountDouble;}public void setAmountDouble(double amountDouble) {this.amountDouble = amountDouble;}public BigDecimal getAmountBigDecimal() {return amountBigDecimal;}public void setAmountBigDecimal(BigDecimal amountBigDecimal) {this.amountBigDecimal = amountBigDecimal;}@Overridepublic String toString() {return "Money{" +"type='" + type + '\'' +", amountInt=" + amountInt +", amountLong=" + amountLong +", amountDouble=" + amountDouble +", amountBigDecimal=" + amountBigDecimal +'}';}
}

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

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

相关文章

python每日一题——9找到字符串中所有字母异位次

题目 给定两个字符串 s 和 p&#xff0c;找到 s 中所有 p 的 异位词 的子串&#xff0c;返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串&#xff08;包括相同的字符串&#xff09;。 示例 1: 输入: s “cbaebabacd”, p “abc”…

JSON.stringify,JSON.parse

JSON.stringify(value, replacer, space)&#xff1a;这个方法将 JavaScript 对象转化为 JSON 字符串。 value&#xff1a;必需&#xff0c;需要转化为 JSON 字符串的值。replacer&#xff1a;可选&#xff0c;一个函数或者数组&#xff0c;用来过滤或转换对象的属性。space&am…

vue.js如何根据后台返回来的图片url进行图片下载

原创/朱季谦 最近在做一个前端vue.js对接的功能模块时&#xff0c;需要实现一个下载图片的功能&#xff0c;后台返回来的是一串图片url&#xff0c;试了很多种方法&#xff0c;发现点击下载时出来的效果&#xff0c;都是跳到一个新的图片网页&#xff0c;后来经过一番琢磨&…

华为OD机试真题-分月饼-2023年OD统一考试(C卷)

题目描述: 题目描述: 中秋节,公司分月饼,m个员工,买了n个月饼,m<=n,每个员工至少分1个月饼,但可以分多个,单人分到最多月饼的个数是Max1,单人分到第二多月饼个数是Max2,Max1-Max2 <= 3,单人分到第n-1多月饼个数是Max(n-1),单人分到第n多月饼个数是Max(n),M…

23款奔驰E300L升级23P驾驶辅助 智驾出行 缓解开车疲劳

辅助驾驶越来越多的被大家所青睐&#xff01;为了提升驾驶安全性和舒适便捷性奔驰改装原厂半自动驾驶23P辅助系统 23P智能辅助驾驶系统还是很有必要的&#xff0c;因为在跑高速的时候可以使用23P智能驾驶的自动保持车速&#xff0c;保持车距&#xff0c;车道自动居中行驶以及自…

SELinux零知识学习三十三、SELinux策略语言之角色和用户(4)

接前一篇文章:SELinux零知识学习三十二、SELinux策略语言之角色和用户(3) 三、SELinux策略语言之类型强制 SELinux提供了一种依赖于类型强制(类型增强,TE)的基于角色的访问控制(Role-Based Access Control),角色用于组域类型和限制域类型与用户之间的关系,SELinux中…

每日一练 | 华为认证真题练习Day21

Day21 华为认证中级考试真题 1、VXLAN本身与SDN技术没有关系。 A.正确 B.错误 2、对Agile Controller的准入控制技术的应用场景的描述&#xff0c;错误的是 A.MAC认证中&#xff0c;用户终端以MAC地址作为身份凭据认证服务器上进行认证。MAC地址认证主要用于IP电话、打印机…

CountDownLatch实战应用——批量数据多线程协调异步处理(子线程执行事务回滚)

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; CountDownLatch实战应用——批量数据多线程协调异步处理(子线程执行事务…

【UnLua】在 Lua 中定义 UE 反射类型

【UnLua】在 Lua 中定义 UE 反射类型 用法 启动编辑器时遍历 Defines 目录下 lua 脚本来加载 UE 反射类型&#xff08;开个临时的 Lua VM 即可&#xff09;直接像 -- define a uenum in lua UEnum.EEnumGuestSomethingElse {Value1 1;Value2 2; }-- use it like a native …

NX二次开发UF_CURVE_ask_ocf_data 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_ocf_data Defined in: uf_curve.h int UF_CURVE_ask_ocf_data(tag_t feature, UF_CURVE_ocf_data_p_t * offset_data ) overview 概述 Returns the offset data for …

Halcon Solution Guide I basics(4.1): Blob Analysis 自主练习

文章目录 文章专栏前言自主练习题目输出电路板焊点个数解决方案:正确率&#xff1a;90 文章专栏 我的Halcon开发 CSDN 专栏 Halcon学习 练习项目gitee仓库 CSDN Major 博主Halcon文章推荐 随笔分类 - Halcon入门学习教程 前言 为了更加熟练的掌握Halcon的练习&#xff0c;我之…

基于SSM实现的叮当书城

一、系统架构 前端&#xff1a;jsp | jquery | layui 后端&#xff1a;spring | springmvc | mybatis 环境&#xff1a;jdk1.7以上 | mysql | maven 二、代码与数据库 三、功能介绍 01. 系统首页 02. 商品分类 03. 热销 04. 新品 05. 注册 06. 登录 07. 购物车 08. 后台-首页 …

Linux:centOS常用命令

CentOS是一种基于Red Hat Enterprise Linux&#xff08;RHEL&#xff09;的开源操作系统&#xff0c;因此与其他基于Linux的系统共享很多相似的命令。以下是一些在CentOS上常用的命令 件和目录操作: ls: 列出目录内容。cd: 切换目录。pwd: 显示当前工作目录。mkdir: 创建目录…

Grafana采用Nginx反向代理

一、场景介绍 在常规操作中&#xff0c;一般情况下不会放开许多端口给外部访问&#xff0c;特别是直接 ip:port 的方式开放访问。但是 Grafana 的请求方式在默认情况下是没有任何规律可寻的。 为了满足业务需求&#xff08;后续通过 Nginx 统一一个接口暴露 N 个服务&#xf…

解决Vue编程式导航路由跳转不显示目标路径问题

我们配置一个编程式导航的路由跳转&#xff0c;跳转到 /search 页面&#xff0c;并且携带categoryName和categoryId两个query参数。 this.$router.push({path: "/search",query: {categoryName: dataset.categoryname,categoryId: dataset.categoryid} }) 如果我们…

霍夫丁不等式(Hoeffding‘s inequality)

参考资料&#xff1a;Hoeffdings inequality | encyclopedia article by TheFreeDictionary 霍夫丁不等式&#xff08;Hoeffdings inequality&#xff09;描述了随机变量的和、与和的期望之差的上限&#xff1b;或者表述为&#xff1a;随机变量的均值、与均值的期望之差的上限。…

2017年五一杯数学建模B题自媒体时代的消息传播问题解题全过程文档及程序

2017年五一杯数学建模 B题 自媒体时代的消息传播问题 原题再现 电视剧《人民的名义》中人物侯亮平说&#xff1a;“现在是自媒体时代&#xff0c;任何突发性事件几分钟就传播到全世界。”相对于传统媒体&#xff0c;以互联网技术为基础的自媒体以其信息传播的即时性、交往方式…

LeetCode198.打家劫舍

打家劫舍和背包问题一样是一道非常经典的动态规划问题&#xff0c;只要做过几道动态规划的题&#xff0c;这道题简直就非常容易做出来。我应该花了10来分钟左右就写出来了&#xff0c;动态规划问题最重要的就是建立状态转移方程&#xff0c;就是说如何从上一个状态转移到下一个…

【开源】基于Vue+SpringBoot的独居老人物资配送系统

项目编号&#xff1a; S 045 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S045&#xff0c;文末获取源码。} 项目编号&#xff1a;S045&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询社区4…

浏览器中实现可视化的方式有哪几种?带你盘点一下

前言 &#x1f4eb; 大家好&#xff0c;我是南木元元&#xff0c;热衷分享有趣实用的文章&#xff0c;希望大家多多支持&#xff0c;一起进步&#xff01; &#x1f345; 个人主页&#xff1a;南木元元 目录 可视化的含义 浏览器中实现可视化的4种方式 1. HTMLCSS 2. SVG …