当前位置: 首页 > news >正文

【Java8系列06】Java8数据计算

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

      • 1.汇总数据
      • 2.分组求和
      • 3.内存分页
      • 4.判断集合为空
      • 5.并行处理
      • 6.获取字符中数据
      • 7.判断相同的元素
      • 8.list 是否重复
      • 9.数据去重

1.汇总数据

homeSkuTotal.setTotal7SalQty(tags.stream().mapToInt(item -> Objects.nonNull(item.getTotal7SalQty()) ? item.getTotal7SalQty() : 0).sum());
 if (CollectionUtils.isNotEmpty(homeSkuTotalOrr)) {homeSkuTotalOrr.stream().mapToInt(AdsDayOrrDO::getOrderNotArriveQty).sum();
}

2.分组求和

分组求最大值再求和

 if (CollectionUtils.isNotEmpty(homeSkuTotalOrr)) {final Collection<Optional<AdsDayOrrDO>> values = homeSkuTotalOrr.stream().collect(Collectors.groupingBy(AdsDayOrrDO::getProductKey, Collectors.maxBy(Comparator.comparing(AdsDayOrrDO::getPeriodSdate)))).values();homeSkuTotalDTO.setOrderNotArriveQty(values.stream().mapToInt(item -> item.get().getOrderNotArriveQty()).sum());homeSkuTotalDTO.setReplenishNotArriveQty(values.stream().mapToInt(item -> item.get().getReplenishNotArriveQty()).sum());}

3.内存分页

pageBean.setTotalElements(tags.size());pageBean.setTotalPages(tags.size() / pageQuery.getSize() + (tags.size() % pageQuery.getSize() == 0 ? 0 : 1));pageBean.setSize(pageQuery.getSize());pageBean.setNumber(pageQuery.getPage());pageBean.setContent(tags.stream().skip((pageQuery.getPage() - 1) * pageQuery.getSize()).limit(pageQuery.getSize()).collect(Collectors.toList()));pageBean.setNumberOfElements(CollectionUtils.isNotEmpty(pageBean.getContent()) ? pageBean.getContent().size() : 0L);

4.判断集合为空

CollectionUtils.isNotEmpty({a,b}): true
<dependency><groupId>commons-collections</groupId><artifactId>commons-collections</artifactId><version>3.2.2</version>
</dependency>

5.并行处理

@Test
public void test15() {// 调用 parallelStream 方法即能并行处理List<String> names = properties.parallelStream().filter(p -> p.priceLevel < 4).sorted(Comparator.comparingInt(Property::getDistance)).map(Property::getName).limit(2).collect(Collectors.toList());System.out.println(JSON.toJSONString(names));
}

6.获取字符中数据

//博客浏览量未达成
final int x = message.indexOf("需要");
String str = message.substring(x + 2, x + 7);
for (int i = str.length() - 1; i >= 0; i--) {char lastChar = str.charAt(i);if (Character.isDigit(lastChar)) {// 字符不是数字,舍去最后一位字符str = str.substring(0, i + 1);break;}
}

7.判断相同的元素

public class Java8_06_Stream_Same {public static void main(String[] args) {// 老师集合List<Teacher> teachers = Arrays.asList(new Teacher(1L, "张三"),new Teacher(2L, "李四"),new Teacher(3L, "王五"),new Teacher(4L, "赵六"));// 学生集合List<Student> students = Arrays.asList(new Student(5L, "张三"),new Student(6L, "李四"),new Student(7L, "小红"),new Student(8L, "小明"));// 求同时出现在老师集合和学生集合中的人数,name相同即视为同一个人int size = (int) teachers.stream().map(t -> students.stream().filter(s -> Objects.nonNull(t.getName()) && Objects.nonNull(s.getName()) && Objects.equals(t.getName(), s.getName())).findAny().orElse(null)).filter(Objects::nonNull).count();// 求同时出现在老师集合和学生集合中人的name集合,name相同即视为同一个人List<String> names = teachers.stream().map(t -> students.stream().filter(s -> Objects.nonNull(t.getName()) && Objects.nonNull(s.getName()) && Objects.equals(t.getName(), s.getName())).findAny().orElse(null)).filter(Objects::nonNull).map(Student::getName).collect(Collectors.toList());System.out.println("相同的人数:" + size);System.out.println("相同的人姓名集合:" + names);}
}

8.list 是否重复

public class Java8_13_stream_count {public static void main(String[] args) {List<Integer> list = new ArrayList() {{add(1);add(2);add(1);}};long count = list.stream().distinct().count();boolean isRepeat = count < list.size();System.out.println(count);//输出2System.out.println(isRepeat);//输出true}
}

9.数据去重

//方式一
List<Long> distinctIdList = idList.stream().distinct().collect(Collectors.toList());
//方式二
final List<ProductAllexinfoV1DTO> invSqlSkus = tags.stream().filter(t -> t.getInvQty() > 0 || t.getSalQty() > 0).collect(Collectors.toList());homeSkuTotal.setProductTotal(CollectionUtils.isEmpty(invSqlSkus) ? 0 :invSqlSkus.stream().map(ProductAllexinfoV1DTO::getProductKey).collect(Collectors.toSet()).size());

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

相关文章:

【Java8系列06】Java8数据计算

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

Andrioid T 实现充电动画(2)

Andrioid T 实现充电动画&#xff08;2&#xff09; 以MTK平台为例&#xff0c;实现充电动画 效果图 资源包 修改文件清单 system/vendor/mediatek/proprietary/packages/apps/SystemUI/res/layout/prize_charge_layout.xmlsystem/vendor/mediatek/proprietary/packages/ap…...

静态方法和属性的经典使用-单例设计模式

单例设计模式 一、设计模式二、单例模式1、饿汉式2、懒汉式3、区别 单例设计模式是静态方法和属性的经典使用。 一、设计模式 设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式就像是经典的棋谱&#xff0c;不同的棋局&…...

TCP七层协议

物理层 中间的物理链接可以是光缆、电缆、双绞线、无线电波。中间传的是电信号&#xff0c;即010101...这些二进制位。 比特(bit)是二进制&#xff08;Binary Digit&#xff09;的简称&#xff0c;电脑所有的信息都是二进制的&#xff0c;就是0和1组成的。 数据链路层 早期…...

规则引擎Drools使用,0基础入门规则引擎Drools(五)实战+决策表

文章目录 系列文章索引十、个人所得税计算器实战1、名词解释2、计算规则3、实现步骤 十一、信用卡申请实战1、计算规则2、实现 十二、保险产品准入规则实战1、决策表2、基于决策表的入门案例3、保险产品规则介绍4、实现步骤5、资料 系列文章索引 规则引擎Drools使用&#xff0…...

Java后端开发——MVC商品管理程序

Java后端开发——MVC商品管理程序 本篇文章内容主要有下面几个部分&#xff1a; MVC架构介绍项目环境搭建商品管理模块Servlet代码重构BaseServlet文件上传 MVC 是模型-视图-控制器&#xff08;Model-View-Controller&#xff09;&#xff0c;它是一种设计模式&#xff0c;也…...

【隐私计算】VOLE (Vector Oblivious Linear Evaluation)学习笔记

近年来&#xff0c;VOLE&#xff08;向量不经意线性评估&#xff09;被用于构造各种高效安全多方计算协议&#xff0c;具有较低的通信复杂度。最近的CipherGPT则是基于VOLE对线性层进行计算。 1 VOLE总体设计 VOLE的功能如下&#xff0c;VOLE发送 Δ \Delta Δ和 b b b给send…...

国产linux单用户模式破解无密码登陆 (麒麟系统用户登录密码遗忘解决办法)

笔者手里有一批国产linu系统&#xff0c;目前开始用在日常的工作生产环境中&#xff0c;我这个老程序猿勉为其难的充当运维的或网管的角色。 国产linux系统常见的为麒麟Linux&#xff0c;统信UOS等&#xff0c;基本都是基于debian再开发的linux。 问题描述&#xff1a; 因为…...

GPT市场将取代插件商店 openAI已经关闭plugins申请,全部集成到GPTs(Actions)来连接现实世界,可以与物理世界互动了。

Actions使用了plugins的许多核心思想&#xff0c;也增加了新的特性。 ChatGPT的"Actions"与"Plugins"是OpenAI在GPT模型中引入的两种不同的功能扩展机制。这两种机制的目的是增强模型的功能&#xff0c;使其能够处理更多样化的任务和请求。下面是对两者的比…...

PHP定义的变量 常量 静态变量等储存在内存什么位置?

在 PHP 中&#xff0c;变量、常量和静态变量都存储在内存中。它们的存储位置和生命周期有所不同。 变量&#xff1a;PHP 中的变量是动态类型的&#xff0c;它们的值和类型可以随时改变。当 PHP 脚本执行时&#xff0c;会在内存中分配一块空间来存储变量的值&#xff0c;这个空…...

C#中GDI+绘图应用(柱形图、折线图和饼形图)

目录 一、柱形图 1.示例源码 2.生成效果 二、折线图 1.示例源码 2.生成效果 三、饼形图 1.示例源码 2.生成效果 GDI绘制的一些常用的图形&#xff0c;其中包括柱形图、折线图和饼形图。 一、柱形图 柱形图也称为条形图&#xff0c;是程序开发中比较常用的一种图表技术…...

连锁零售企业如何提高异地组网的稳定性?

随着数字化时代的到来&#xff0c;连锁零售企业面临着日益复杂和多样化的网络挑战。连锁零售企业是在不同地理位置拥有分支机构和零售店&#xff0c;可能同城或异地&#xff0c;需要确保各个地点之间的网络连接稳定和可靠。但由于不同地区的网络基础设施差异、网络延迟和带宽限…...

如何靠掌握自己的大数据打破信息流的壁垒?

在当今数字化时代&#xff0c;打造自己的私域流量已经成为商家乃至获取竞争优势的关键手段之一。通过掌握自己的大数据&#xff0c;可以更好地了解用户需求和市场趋势&#xff0c;优化产品和服务&#xff0c;从而打破信息流的壁垒。本文将就如何通过打造自己的私域流量并掌握大…...

LabVIEW绘制带有多个不同标尺的波形图

LabVIEW绘制带有多个不同标尺的波形图 通过在同一波形图上使用多个轴&#xff0c;可以使用不同的标尺绘制数据。请按照以下步骤操作。 将波形图或图表控件放在前面板上。 1. 右键点击您要创建多个标尺的轴&#xff0c;然后选择复制标尺。例如&#xff0c;如果要为一个…...

Oracle行转列,列转行使用实例

-----1.行转换为列 select a.fworkcenter as 车间,F1||-数量 as 类型, fspec as 规格 ,ftype as 前缀 , to_char(fdate,YYYY-MM-dd) as 日期, (case when a.fcode in (900,901) then to_char(fcount,fm90.990) else cast(fcount as varchar(20)) end) 值 , …...

056-第三代软件开发-软件打包

第三代软件开发-软件打包 文章目录 第三代软件开发-软件打包项目介绍软件打包1 下载 linuxdepoyqt 工具2 安装 linuxdepoyqt3 qmake配置4 打包程序 总结 关键字&#xff1a; Qt、 Qml、 linuxdeployqt、 Ubuntu、 AppImage 项目介绍 欢迎来到我们的 QML & C 项目&…...

C++相关闲碎记录(2)

1、误用shared_ptr int* p new int; shared_ptr<int> sp1(p); shared_ptr<int> sp2(p); //error // 通过原始指针两次创建shared_ptr是错误的shared_ptr<int> sp1(new int); shared_ptr<int> sp2(sp1); //ok 如果对C相关闲碎记录(1)中记录的shar…...

如何快速搭建一个大模型?简单的UI实现

&#x1f525;博客主页&#xff1a;真的睡不醒 &#x1f680;系列专栏&#xff1a;深度学习环境搭建、环境配置问题解决、自然语言处理、语音信号处理、项目开发 &#x1f498;每日语录&#xff1a;相信自己&#xff0c;一路风景一路歌&#xff0c;人生之美&#xff0c;正在于…...

国家开放大学 平时作业 测试题 训练

试卷代号&#xff1a;1340 古代小说戏曲专题 参考试题&#xff08;开卷&#xff09; 一、选择&#xff08;每题1分&#xff0c;共10分&#xff09; 1.下列作品中属于唐传奇的是( )。 A.《公孙九娘》 B.《观音作别》 C《碾玉观音》 …...

后端防止重复提交相同数据处理方式(Redis)

使用AOP注解处理接口幂等性&#xff0c;默认禁止同一用户在上次提交未果后10秒内又重复提交 在原先的sameUrlData的注解上进行了copy新建优化&#xff0c;使用redis去setnx的参数视项目使用点而调整&#xff0c;不一定是每个项目都适合这种取参形式。 源码如下: package com…...

XRF导向的土壤重金属定量分析方法与应用【附模型】

✨ 长期致力于X射线荧光、土壤重金属、本底扣除、重叠峰解析、光谱联用研究工作&#xff0c;擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流&#xff0c;点击《获取方式》 &#xff08;1&#xff09;非对称加权惩罚最小二乘本底扣…...

别再乱升级了!在CentOS 7上优雅共存Python 2和3.10.1的完整实践

在CentOS 7上实现Python 2与3.10.1和谐共存的终极指南 当老旧系统遇上现代开发需求&#xff0c;Python版本冲突成为许多开发者的噩梦。CentOS 7默认搭载的Python 2.7与当下项目所需的Python 3.10特性之间&#xff0c;似乎总有一场不可避免的战争。但真相是——它们完全可以和平…...

从弹簧小车到悬臂梁:用Python和SymPy手把手推导变分法与欧拉方程

从弹簧小车到悬臂梁&#xff1a;用Python和SymPy手把手推导变分法与欧拉方程 在工程力学和数学物理方程的学习中&#xff0c;变分法是一个既令人着迷又让人望而生畏的领域。它像一座桥梁&#xff0c;连接着抽象的数学原理和具体的物理现象。传统教学中&#xff0c;变分法往往以…...

Halcon实战:当键盘字符印刷检测遇上位置偏移和亮度不均,差异化模型如何“稳如泰山”?

Halcon差异化模型在键盘字符印刷检测中的实战应用 键盘字符印刷检测是工业视觉领域最具挑战性的任务之一。想象一下&#xff0c;当数千个键盘以每分钟数十个的速度通过传送带时&#xff0c;每个按键上的字符都可能存在印刷缺陷——多墨、少墨、模糊、偏移&#xff0c;甚至完全缺…...

Closures实战指南:简化UITableView和UICollectionView数据绑定的终极教程 [特殊字符]

Closures实战指南&#xff1a;简化UITableView和UICollectionView数据绑定的终极教程 &#x1f680; 【免费下载链接】Closures Swifty closures for UIKit and Foundation 项目地址: https://gitcode.com/gh_mirrors/cl/Closures Closures是一个强大的iOS框架&#xff…...

5分钟快速生成专业README文件:readme-md-generator完全指南

5分钟快速生成专业README文件&#xff1a;readme-md-generator完全指南 【免费下载链接】readme-md-generator &#x1f4c4; CLI that generates beautiful README.md files 项目地址: https://gitcode.com/gh_mirrors/re/readme-md-generator 在开源项目开发中&#x…...

终极指南:5分钟掌握JarEditor,无需解压直接编辑JAR文件

终极指南&#xff1a;5分钟掌握JarEditor&#xff0c;无需解压直接编辑JAR文件 【免费下载链接】JarEditor IDEA plugin for directly editing and modifying files in jar without decompression. &#xff08;一款无需解压直接编辑修改jar包内文件的IDEA插件&#xff09; 项…...

UE5安装避坑指南:从Launcher到C++编译的完整环境配置

1. 这不是“点下一步就行”的安装&#xff1a;UE5下载安装背后的真实门槛很多人第一次点开Epic Games官网&#xff0c;看到那个醒目的“Download Engine”按钮&#xff0c;下意识觉得&#xff1a;“不就是个游戏引擎安装包&#xff1f;跟装微信、装PS差不多&#xff0c;双击→下…...

UPGEN Lighting HDRP:HDRP光照优化与自动化配置方案

1. 这不是又一个“开箱即用”的灯光插件&#xff0c;而是HDRP光照工程的系统性减负方案我第一次在项目里把UPGEN Lighting HDRP拖进Assets文件夹时&#xff0c;并没指望它能解决什么大问题——毕竟Unity官方HDRP模板里自带的Light Explorer、Light Probe Group、Reflection Pro…...

RT-Trace升级:集成GDB Server与一键烧录,打造嵌入式开发调试平台

1. 项目概述&#xff1a;嵌入式开发的“瑞士军刀”再进化如果你是一名嵌入式开发者&#xff0c;最近可能被一个词刷屏了——RT-Trace。这已经不是它第一次带来惊喜了。最初&#xff0c;它以非侵入式的实时追踪和性能分析能力&#xff0c;在RT-Thread社区里掀起了一阵热潮&#…...