【Java8系列06】Java8数据计算

news2025/1/4 19:36:35

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
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);//输出2
    System.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

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

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

相关文章

设计模式之美学习笔记-单例模式-为什么说支持懒加载的双重检测不比饿汉式更优?

单例设计模式&#xff1a;一个类只允许创建一个对象&#xff08;或者实例&#xff09;&#xff0c;那这个类就是一个单例类&#xff0c;这种设计模式就叫作单例设计模式&#xff0c;简称单例模式。 实战案例一&#xff1a;处理资源访问冲突 我们先来看第一个例子。在这个例子…

近期知识点随笔

菜单查询&#xff08;编写权限时的细节&#xff09; 菜单查询list为了侧边框展示更完整&#xff08;不报空指针&#xff09; 登录时&#xff08;用户名&#xff09;查询出多个结果&#xff08;保证用户名唯一&#xff09; 文件上传 前端 对权限与菜单绑定的修改&#xff08;实…

LV.12 D21 PWM实验 学习笔记

一、PWD简介 1.1 蜂鸣器工作原理 有源蜂鸣器 有源蜂鸣器只要接上额定电源就可以发出声音 无源蜂鸣器 无源蜂鸣器利用电磁感应原理&#xff0c;为音圈接入交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜发声 1.2 使用GPIO控制 while(1) { GPX2.DATGPX2.D…

基于SSM实现的图书管理系统

一、系统架构 前端&#xff1a;jsp | js | css | jquery | layui 后端&#xff1a;spring | springmvc | mybatis 环境&#xff1a;jdk1.7 | mysql | maven | tomcat 二、代码及数据库 三、功能介绍 01. 登录页 02. 首页 03. 借阅管理 04. 图书管理 05. 读者管理 06. 类型管理…

数据库-MySQL之数据库必知必会17-21章

第17章 组 合 查 询 创建组合查询 可用UNION操作符来组合数条SQL查询。利用UNION&#xff0c;可给出多条SELECT语句&#xff0c;将它们的结果组合成单个结果集。 **例子&#xff1a;**假如需要价格小于等于5的所有物品的一个列表&#xff0c;而且还想包括供应商1001和1002生产…

树莓派系列教程:单总线控制DS18B20

DS18B20是一个比较常用的温度传感器&#xff0c;采用单总线控制&#xff0c;以前用单片机编程控制时严格按照单总线的时序控制&#xff0c;今天来看看在linux系统下如何控制DS18B20,体验一下在linux世界&#xff0c;一切都是文件。 一、修改配置文件 1sudo vi /boot/config.tx…

JavaScript WebAPI(三)(详解)

这次介绍一下webAPI中的一些知识&#xff1a; 回调函数 回调函数是指 如果将函数A做为参数传递给函数B时&#xff0c;我们称函数A为回调函数 例如&#xff1a; // 立即执行函数中传递的函数是一个回调函数 (function(){ console.log("我是回调函数") })(); // …

CSS技巧:从高度0过渡到自动高度

本文翻译自 CSS trick: transition from height 0 to auto!&#xff0c;作者&#xff1a;Francesco Vetere&#xff0c; 略有删改。 如果你在CSS上花了足够长的时间&#xff0c;很可能你曾尝试过从height:0到auto的平滑过渡。。。却发现它不起作用&#xff01;&#x1f622; ️…

USB Type-C的基本原理

1 USB Type-C的基本原理 1.1 基本特性 Figure 1-1 USB Type-C接头外形 USB Type-C&#xff08;简称USB-C&#xff09;的基本特性&#xff1a; 1. 接口插座的尺寸与原来的Micro-USB规格一样小&#xff0c;约为8.3mm X 2.5mm 2. 可承受1万次反复插拔 3. 支持正反均可插入的“正反…

力扣6.N字形变换

题目描述 思路 模拟轨迹&#xff0c;每当行数i到最顶&#xff08;0&#xff09;&#xff0c;或者最底&#xff08;numRows&#xff09;的时候&#xff0c;就会反方向走。 用flag来标记方向&#xff0c;在题解里看到&#xff0c;真的很巧妙5555&#xff01; 代码 class Solu…

Tomcat-安装与基础配置

Tomcat-安装与基础配置 下载 下载Tomcat9 选择适合自己系统位数的版本下载 Tomcat-目录 bin: 存放启动与关闭Tomcat的脚本文件conf: 存放Tomcat的各种配置文件,其中最主要的配置文件就是server.xml【如果端口冲突,就可以将 8080 端口修改】lib: 存放Tomcat运行时所需的j…

2023-12-01 AIGC-自动生成ppt的AI工具

摘要: 2023-12-01 AIGC-自动生成ppt-记录 自动生成ppt: BoardMix boardmix 一键生成ppt boardmix是一款基于云的ai设计软件&#xff0c;允许创建用于各种目的的自定义演示文稿、ai绘画&#xff0c;ai生成思维导图等。以下是它的一些功能&#xff1a; 可定制的模板 - 它有一个…

基于Web邮箱的邮件系统

题目: 基于web的邮件收发系统设计与实现 摘 要 计算机的应用已经越来越广泛&#xff0c;它从产生到完善已经差不多有50年左右的历史&#xff0c;更新换代速度非常快&#xff0c;在人们生活、工作中都发挥了不可替代的作用&#xff0c;几乎所有行业都离不开它&#xff0c;已经成…

校招笔试-Windows开发工程师客观题合集解析

360公司-2019校招笔试-Windows开发工程师客观题合集 API无法实现进程间数据的相互传递是PostMessage 2.以下代码执行后&#xff0c;it的数据为&#xff08;异常&#xff09; std::list<int> temp; std::list<int>::iterator it temp.begin(); it --it; 3.API…

matlab 无迹卡尔曼滤波

1、内容简介 略 26-可以交流、咨询、答疑 2、内容说明 无迹卡尔曼滤波 无迹卡尔曼滤波 无迹卡尔曼滤波 3、仿真分析 %该文件用于编写无迹卡尔曼滤波算法及其测试 %注解&#xff1a;主要子程序包括&#xff1a;轨迹发生器、系统方程 % 测量方程、UKF滤波器 %----…

微机原理——定时器学习1

目录 定时类型 8253内部结构框图 8253命令字 六种工作方式及输出波形 计数初值的计算与装入 8253的初始化 定时类型 可编程定时器8253&#xff1a;&#xff08;内部采用的是16位 减法计数器&#xff09; 8253内部结构框图 8253命令字 8253有三个命令字&#xff1a;方式命…

39.从0到上线三天搭建个人网站(第三天)

点赞收藏加关注&#xff0c;你也能住大别墅&#xff01; 一、第三天主要工作 1.完成detail页面的开发 2.将所有数据以及部分静态资源存在uniCloud&#xff0c;为以后做管理后台做准备 3.创建云对象getData&#xff0c;在beforecreate&#xff08;&#xff09;中获取数据 4.…

Linux 常用命令集

1、根据端口查询进程号&#xff1a; netstat -nlp | grep 10050 或者使用 lsof -i:10050 2、查询所有服务进程号&#xff1a;top 3、根据进程号查询服务路径 ll /proc/28145/cwd 4、同步网络时间 yum install -y ntpdate ntpdate ntp.aliyun.com 设置定时任务 更新时间 * * * *…

ansible模块

目录 一、ansible的command模块 1.ad-hoc 2.playbook 3.command模块 二、ansible的shell模块 1.shell模块帮助 2.shell模块支持的参数和解释 3.简单试验 4.批量远程执行脚本 三、script模块 1.script模块帮助 2.shell模块支持的参数和解释 3.实践 四、ansible文件…

ESP32-Web-Server编程- 通过滑动条向 Web 提交数据

ESP32-Web-Server编程- 通过滑动条向 Web 提交数据 概述 上一节我们讲述了通过文本框向 ESP32 发送字符串、数字。有时&#xff0c;我们需要向 ESP32 发送连续的值&#xff0c;这种需求可以通过在网页端实现滑动条来实现。 需求及功能解析 本节演示如何在 ESP32 上部署一个…