首页 > 编程语言 >Java 8中 lambda表达式、Stream API的常见用法

Java 8中 lambda表达式、Stream API的常见用法

时间:2024-03-17 12:32:54浏览次数:27  
标签:Stream Java stream Collectors map List collect API BigDecimal

1、取出集合中的某个字段:

  //拿到车辆ids
List<Long> carIds = parkCarInDbList.stream().map(ParkCar::getId).collect(Collectors.toList());

2、集合直接进行遍历然后进行相关操作:

 List<Car> cars = carService.getListByCarId(carIds);
            cars.forEach(car -> {
                String plate = car.getPlate();
                parkCarPlatesInDbList.add(plate);
                parkCarPlatesIdInDbMap.put(plate, car.getParkCarId());

3、直接使用filter过滤,sum进行聚合操作:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream()
                 .filter(number -> number % 2 == 0)
                 .mapToInt(number -> number * 2)
                 .sum();
System.out.println(sum);

4、BigDecimal金额进行相加:

  //寄售订单金额
      BigDecimal consignTotalPrice = saleOrderVoList.stream()
          .map(HomeStatisticsOrderVo::getTotalPrice)
          .reduce(BigDecimal.ZERO, BigDecimal::add);

5、使用count个数相加:

  Integer consignUser = Math.toIntExact(
          saleOrderVoList.stream().map(HomeStatisticsOrderVo::getUserNumber)
              .count());

6、使用Collectors.toMap将集合转成map:

  Map<Long, String> areaMap = areaList.stream().collect(Collectors.toMap(BuildAreaV1::getId, BuildAreaV1::getAreaName));

7、distinct进行去重:

List<Long> buildingIds = vos.stream().map(BuildElevatorListVO::getBuildingId).distinct().collect(Collectors.toList());

8、使用Collectors.groupingBy根据某个字段进行集合分组

 Map<Long, List<UserV1>> userMap =userList.stream().collect(Collectors.groupingBy(UserV1::getParkId));

9、使用stream().sorted()根据某个字段进行排序之倒叙:

 List<CompanyUserStatisticVO> collect = list.stream().sorted(Comparator.comparing(CompanyUserStatisticVO::getPersonCount).reversed()).collect(Collectors.toList());

10、使用stream().sorted()根据某个字段进行排序之正叙:

List<Integer> numbers = Arrays.asList(5, 2, 1, 4, 3);
List<Integer> sortedNumbers = numbers.stream()
                                     .sorted()
                                     .collect(Collectors.toList());
System.out.println(sortedNumbers);

标签:Stream,Java,stream,Collectors,map,List,collect,API,BigDecimal
From: https://blog.csdn.net/xiaolong_gogo/article/details/136779320

相关文章

  • java毕设安卓昆虫科普APP实现(开题+源码)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着移动互联网的普及和智能手机的广泛应用,人们的生活方式发生了深刻变革。智能手机APP以其便捷性、交互性和个性化等特点,成为现代人获取信息和知识......
  • java毕设安卓考研院校择选app(开题+源码)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在数字化快速发展的时代,信息技术的应用已深入到各个领域,教育行业亦不例外。特别是在考研这一重要的人生节点上,学生们面临着院校选择、专业匹配、分数......
  • JAVA 判断与循环
    顺序结构是Java程序默认的执行流程,按照代码的先后顺序,从上到下依次执行。分支结构1.if语句      (1)if(关系表达式){语句体;}     (2)if(关系表达式){语句体1;}          else  {语句体2;}     (3)if(关系表达式1){语句体1;}       ......
  • Arthas - Can not read arthas version from: https://arthas.aliyun.com/api/latest_
    问题描述[ERROR]Cannotreadarthasversionfrom: https://arthas.aliyun.com/api/latest_version[ERROR]CannotfindArthasunderlocal:/root/.arthas/libandremoterepomirror:aliyun[ERROR]Unabletodownloadarthasfromremoteserver,pleasedownload......
  • java毕业设计基于微信小程序的疫情点餐系统
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义在当今社会,随着移动互联网技术的飞速发展和智能手机的普及,微信小程序以其便捷性和高效性成为人们生活中不可或缺的一部分。特别是在新冠疫情的影响下,无接触服务成......
  • java核心技术卷1 第五章:继承
    学习重要的是出,而不是入,此前一直埋头向前学,忽视了复习的重要性。写一个博客作为自己的学习笔记,也可作为以后查漏补缺的资料,温故而知新。类,超类和子类一个继承另一个类,父类也称为超类,基类。"超类"中的超来自于集合理论,指的是父类,与之后的super关键字对应java中,类的继承默认为pu......
  • Java基础 --- 面向对象
    面向对象面向对象介绍介绍面向:拿、找对象:能干活的东西面向对象编程:拿东西过来坐对应的事情设计对象并使用类和对象类(设计图):是对象共同特征的描述;对象:是真实存在的具体东西在Java中,必须先设计类,才能获得对象。如何定义类publicclass类名{1.成员变量(代......
  • 新一代 Kaldi: 支持 JavaScript 进行本地语音识别和语音合成啦!
    简介新一代 Kaldi 部署框架 sherpa-onnx 支持的编程语言 API 大家庭中,最近增加了一个新成员: JavaScript。为了方便大家查看,我们把目前所有支持的编程语言汇总成如下一张图。注:这个家庭还在不断的扩充,总有一款适合你!后续我们会增加 Dart、Rust、WebAssembly 等支持......
  • Java设计模式之模板模式。
    模板模式(TemplatePattern)是Java中常用的设计模式之一,是一种行为设计模式,它定义了一个算法的骨架,将具体步骤延迟到子类中实现。模板模式使得子类可以在不改变算法结构的情况下重新定义算法中的某些步骤,下面通过Java代码看看模板模式的用法。//模板类abstractclassAbstr......
  • java毕设安卓禁毒宣传APP(开题+源码)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景在当今社会,禁毒工作面临着前所未有的挑战。随着互联网的普及,毒品信息传播的速度和范围不断扩大,对青少年和社会造成了极大的危害。因此,加强禁毒宣传教......