当前位置: 首页 > 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

http://www.lryc.cn/news/250241.html

相关文章:

  • Andrioid T 实现充电动画(2)
  • 静态方法和属性的经典使用-单例设计模式
  • TCP七层协议
  • 规则引擎Drools使用,0基础入门规则引擎Drools(五)实战+决策表
  • Java后端开发——MVC商品管理程序
  • 【隐私计算】VOLE (Vector Oblivious Linear Evaluation)学习笔记
  • 国产linux单用户模式破解无密码登陆 (麒麟系统用户登录密码遗忘解决办法)
  • GPT市场将取代插件商店 openAI已经关闭plugins申请,全部集成到GPTs(Actions)来连接现实世界,可以与物理世界互动了。
  • PHP定义的变量 常量 静态变量等储存在内存什么位置?
  • C#中GDI+绘图应用(柱形图、折线图和饼形图)
  • 连锁零售企业如何提高异地组网的稳定性?
  • 如何靠掌握自己的大数据打破信息流的壁垒?
  • LabVIEW绘制带有多个不同标尺的波形图
  • Oracle行转列,列转行使用实例
  • 056-第三代软件开发-软件打包
  • C++相关闲碎记录(2)
  • 如何快速搭建一个大模型?简单的UI实现
  • 国家开放大学 平时作业 测试题 训练
  • 后端防止重复提交相同数据处理方式(Redis)
  • 最小栈[中等]
  • Oracle(2-9) Oracle Recovery Manager Overview and Configuration
  • 滑动验证码
  • 数据爬取+可视化实战_告白气球_词云展示----酷狗音乐
  • rkmedia_vi_get_frame_test.c 代码解析
  • 探究Kafka原理-3.生产者消费者API原理解析
  • Linux系统iptables扩展
  • Openwrt 系统安装 插件名称与中文释义
  • [原创]Delphi的SizeOf(), Length(), 动态数组, 静态数组的关系.
  • C++(20):bind_front
  • 【spring】bean的后处理器