繁体   English   中英

如何使用 lambda 表达式在 java 中每月计算排名?

[英]How to calculate a rank on monthly basis in java by using lambda Expressions?

我正在尝试按月按百分比计算 A 排名。 但目前,在 Lambda 表达式的帮助下,Rank 正在逐年增长。 那么如何根据一个月来计算呢。

这是我尝试过的代码:

List<MVisitsBean> summaryScore = rDao.getdealer_performance(mvBean,mvBean.getYear(),mvBean.getMonth(),mvBean.getRegion_id(),mvBean.getOutlet_id(),mvBean.getBrand_id(),mvBean.getDealer_id(),mvBean.getLimit(),total);

          double[] score = {Double.MIN_VALUE};
             int[] no = {0};
             Integer[] rank = {0};
             List<MVisitsBean> ranking = 
                     summaryScore.stream().sorted(Comparator.comparingDouble(MVisitsBean::getYtd_dealer_avg1).reversed())
                 .map(p -> {
                     ++no[0];
                     if (score[0] != p.getYtd_dealer_avg1()) rank[0] = no[0];
                     p.setYtd_dealer_rank(rank[0]);
                     return new MVisitsBean(rank[0], score[0] =  p.getYtd_dealer_avg1());
                 })
                 // .distinct() // if you want to remove duplicate rankings.
                 .collect(Collectors.toList());
             System.out.println(ranking);

                String jsonArray = gson.toJson(ranking);
                System.out.println(jsonArray);

您想计算月份而不是年份。 所以这个bean:

List<MVisitsBean> summaryScore = rDao.getdealer_performance(mvBean,mvBean.getYear(),mvBean.getMonth(),mvBean.getRegion_id(),mvBean.getOutlet_id(),mvBean.getBrand_id(),mvBean.getDealer_id(),mvBean.getLimit(),total);

它从年和月计算。 我假设如果您将 getYear 更改为 getMonth 并将 getMonth 更改为 getDay (我假设这个 bean 有类似“getDay”的内容)应该没问题。

然后在您的 stream 上:

      List<MVisitsBean> ranking = 
                 summaryScore.stream().sorted(Comparator.comparingDouble(MVisitsBean::getYtd_dealer_avg1).reversed())
             .map(p -> {
                 ++no[0];
                 if (score[0] != p.getYtd_dealer_avg1()) rank[0] = no[0];
                 p.setYtd_dealer_rank(rank[0]);
                 return new MVisitsBean(rank[0], score[0] =  p.getYtd_dealer_avg1());
             })

我不确切知道每个参数在 bean 中的作用。 但我假设:

MVisitsBean::getYtd_dealer_avg1

是豆年的事。 您应该找到与月份相关的内容,例如:

MVisitsBean::getMtd_dealer_avg1

在 bean 中并更新 Stream (getYtd_dealer_avg1, setYtd_dealer_rank) 中的 getter 和 setter。

否则,在不知道您的 MVisitsBean 结构的情况下很难更准确地回答。

希望它会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM