[Java 8 stream流统计数据]

深碍√TFBOYSˉ_ 2023-10-10 18:23 124阅读 0赞

目录

前言:

list 对象统计近一年的金额

统计列表累计金额

获取近一年或者当前一年日期

double统计的数据范围过大需要再次转换String格式:



前言:

记录小笔记

list 对象统计近一年的金额

  1. List<对象> dtoList=null;
  2. LocalDate oneYearAgo = LocalDate.now().minusYears(1); // 计算1年前的日期
  3. double oneYearAmount = 0;
  4. for (xxx obj : dtoList) {
  5. LocalDate executeDate = stringToDate(obj.getFilingDate()).toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); // 转换为 LocalDate 类型
  6. if (executeDate.isAfter(oneYearAgo)) { // 筛选出最近1年的数据
  7. oneYearAmount += Double.parseDouble(obj.getAmount());
  8. }
  9. }
  10. LocalDate.now().minusYears(1) 计算的是当前时间的前一年的日期。例如,今天是202191日,那么 LocalDate.now().minusYears(1) 就是202091日。

统计列表累计金额

  1. //统计数据里的所有累计金额
  2. double sum = dtoList.stream()
  3. .mapToDouble(obj -> Double.parseDouble(obj.getAmount()))
  4. .sum();

获取近一年或者当前一年日期

可以使用 LocalDate 类中的 withDayOfYear() 方法来表示当前一年的时间

  1. LocalDate now = LocalDate.now();
  2. LocalDate startOfYear = now.withDayOfYear(1);
  3. LocalDate endOfYear = now.withDayOfYear(now.lengthOfYear());
  4. 列子:
  5. LocalDate now = LocalDate.parse("2023-05-18");
  6. LocalDate startOfYear = now.withDayOfYear(1);
  7. LocalDate endOfYear = now.withDayOfYear(now.lengthOfYear());
  8. 这段代码计算的是2023年的时间跨度,从202311日开始,到1231日结束。

这段代码实际上是计算当前的一年时间,也就是从当前年份的第一天到最后一天的时间段。其中,LocalDate.now() 获取当前日期,now.withDayOfYear(1) 获取了当前年份的第一天日期,now.withDayOfYear(now.lengthOfYear()) 获取了当前年份的最后一天日期。两者之差即为当前一年的时间跨度。

double统计的数据范围过大需要再次转换String格式:

  1. private static String compareToString(double amount) {
  2. DecimalFormat decimalFormat = new DecimalFormat("#.00");
  3. String sumFormatted = decimalFormat.format(amount);
  4. return sumFormatted;
  5. }

这个格式是科学计数法表示的结果。科学计数法是一种表示大数字或小数字的方法,可以简化数字的表示,但不太方便人类阅读。在Java中,当一个数字太大或者太小,超过了double类型的范围时,就会使用科学计数法来表示。1.2924299E7表示1.2924299乘以10的7次方,即12924299。因此在将这个数字转换为字符串时,可能需要使用DecimalFormat等工具来进行格式化,以便更好地呈现给人类阅读。

发表评论

表情:
评论列表 (有 0 条评论,124人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java8 Stream

    目录 前言 一.stream的使用场景特点 特点: 二.初步体验一下stream 三.简单看一下Stream的常用API 3.1 forEach()遍历集合中的对

    相关 Java8——Stream

    `Stream`是数据渠道,用于操作集合、数组等生成的元素序列。 `Stream`操作的三个步骤: 创建Stream 中间操作 终止操作 一、获取st