[Java 8 stream流统计数据]

 

目录

前言: 

 list 对象统计近一年的金额

 统计列表累计金额

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

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


 


前言: 

    记录小笔记

 list 对象统计近一年的金额

 List<对象> dtoList=null;

  LocalDate oneYearAgo = LocalDate.now().minusYears(1); // 计算1年前的日期
        double oneYearAmount = 0;
        for (xxx  obj : dtoList) {
            LocalDate executeDate = stringToDate(obj.getFilingDate()).toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); // 转换为 LocalDate 类型
            if (executeDate.isAfter(oneYearAgo)) { // 筛选出最近1年的数据
                oneYearAmount += Double.parseDouble(obj.getAmount());
            }
        }



LocalDate.now().minusYears(1) 计算的是当前时间的前一年的日期。例如,今天是2021年9月1日,那么 LocalDate.now().minusYears(1) 就是2020年9月1日。

 统计列表累计金额

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

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

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

LocalDate now = LocalDate.now();
LocalDate startOfYear = now.withDayOfYear(1);
LocalDate endOfYear = now.withDayOfYear(now.lengthOfYear());

列子:
LocalDate now = LocalDate.parse("2023-05-18");
LocalDate startOfYear = now.withDayOfYear(1);
LocalDate endOfYear = now.withDayOfYear(now.lengthOfYear());


这段代码计算的是2023年的时间跨度,从2023年1月1日开始,到12月31日结束。

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是汤圆丫

怎么 给1分?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值