大屏统计数据,按近七日、近六月、近六年

本文介绍了一种通过Java实现的数据统计方法,能够针对近七日、近六月及近六年的数据进行有效汇总,并展示了具体实现代码。该方法通过流式处理将不同时间范围内的数据整合并输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一、代码

public class StatisticsTest {
    public static void main(String[] args) {
        //近七日
        List<CountVo> dayList = selectDataByDayAndMonthAndYear("1");//dayList数据可以通过按时间分组查询数据而得,目前暂时使用模拟数据
        System.out.println("近七日");
        dayList.stream().forEach(e -> System.out.println(e));
        System.out.println();
        //近六月
        List<CountVo> monthList = selectDataByDayAndMonthAndYear("2");//monthList数据可以通过按时间分组查询数据而得,目前暂时使用模拟数据
        System.out.println("近六月");
        monthList.stream().forEach(e -> System.out.println(e));
        System.out.println();
        //近六年
        List<CountVo> yearList = selectDataByDayAndMonthAndYear("3");//yearList数据可以通过按时间分组查询数据而得,目前暂时使用模拟数据
        System.out.println("近六年");
        yearList.stream().forEach(e -> System.out.println(e));
        System.out.println();
    }

    /**
     * 统计数据,按近七日、近六月、近六年
     */
    public static List<CountVo> selectDataByDayAndMonthAndYear(String type){
        List<CountVo> list = new ArrayList<>();
        //1.显示近七日情况
        if (type.equals("1")){
            List<CountVo> dayList = getAnalysisByDay();
            List<String> sevenDate = DateUtils.getSevenDate();
            list = getAnalysisByType(dayList,sevenDate);
        }
        //2.显示近六个月情况
        else if (type.equals("2")){
            List<CountVo> monthList = getAnalysisByMonth();
            List<String> lastSixMonthData = DateUtils.getLastSixMonthDate();
            list = getAnalysisByType(monthList,lastSixMonthData);
        }
        //3.显示近六年情况
        else if (type.equals("3")){
            List<CountVo> yearList = getAnalysisByYear();
            List<String> lastSixYearDate = DateUtils.getLastSixYearDate();
            list = getAnalysisByType(yearList,lastSixYearDate);
        }
        return list;

    }

    public static List<CountVo> getAnalysisByType(List<CountVo> dataList,List<String> dateList){
        List<CountVo> list = new ArrayList<>();
        for (String d:dateList
        ) {
            Boolean flag = false;
            for (CountVo vo:dataList
            ) {
                if (d.equals(vo.getTime())){
                    list.add(new CountVo(d,vo.getNum()));
                    flag = true;
                    break;
                }
            }
            if (!flag){
                list.add(new CountVo(d,0));
            }
        }
        return list;
    }
    
    public static List<CountVo> getAnalysisByDay(){
        List<CountVo> list = new ArrayList<>();
        list.add(new CountVo("2021-11-01",20));
        list.add(new CountVo("2021-10-31",20));
        list.add(new CountVo("2021-10-30",20));
        list.add(new CountVo("2021-10-29",20));
        return list;
    }

    public static List<CountVo> getAnalysisByMonth(){
        List<CountVo> list = new ArrayList<>();
        list.add(new CountVo("2021-11",20));
        list.add(new CountVo("2021-10",20));
        list.add(new CountVo("2021-09",20));
        list.add(new CountVo("2021-08",20));
        return list;
    }

    public static List<CountVo> getAnalysisByYear(){
        List<CountVo> list = new ArrayList<>();
        list.add(new CountVo("2021",20));
        list.add(new CountVo("2020",20));
        list.add(new CountVo("2019",20));
        list.add(new CountVo("2018",20));
        return list;
    }
}

二、注意事项

        DateUtils可以参考此篇文章;

三、示例项目代码

        JavaUtilsDemo: java工具类实例代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值