如何使用 的哈希图添加增量值

问题描述 投票:0回答:1
我有一个称为客户的表,其中有一列称为created_time,所以实际上我想绘制一个地图,以便可以确定在哪一年和哪个月添加了多少客户?现在问是假设在2018年11月添加了2个客户端,在2018年12月添加了0个客户端,所以在12月我也将显示2个(类似于上述月份+本月),如果在2019年1月添加了1个客户端,则我将显示3,依此类推

为了解决这个问题,我创建了一个hashMap,其中第一个键是year,我制作了另一个hashMap,其中键是month,然后添加了客户编号,例如HashMap>

预期输出::

clientsByMonth": { "2018": { "10": 1,(1 client added in oct) 11,1( as 0 client added in nov) 12,2( as 1 client added in december) }, "2019": { "1": 2, ( as no client added ) "2": 4, (as 2 client added) "3": 5, "4": 5 }

    HashMap<Integer, HashMap<Integer, Integer>> clientsByYear = new HashMap<>();
    List<Client> clientList = clientRepository.findAll();

    for (int i = 0; i < clientList.size(); i++) {

        Instant instant = Instant.ofEpochMilli(clientList.get(i).getCreatedTime().getTime());
        LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
        Integer month = localDateTime.toLocalDate().getMonth().getValue();
        Integer year = localDateTime.toLocalDate().getYear();

        if (!clientsByYear.containsKey(year)) {
            HashMap<Integer, Integer> clientByMonth = new HashMap<>();
            clientByMonth.put(month, 1);
            clientsByYear.put(year, clientByMonth);
        } else {
            HashMap<Integer, Integer> clientByMonth = clientsByYear.get(year);
            if (!clientByMonth.containsKey(month)) {
                int clients = 0;
                for (int j = month - 1; j >= 0; j--) {
                    if (clientByMonth.containsKey(j)) {
                        clients = clients + clientByMonth.get(j);
                        break;
                    }
                }
                clientByMonth.put(month, (clients + 1));
            } else if (clientByMonth.containsKey(month)) {
                int clients = clientByMonth.get(month);
                clientByMonth.put(month, (clients + 1));
            }
        }
    }
我有一个称为client的表,其中的一列称为created_time,所以实际上我想绘制一个地图,以便可以确定在哪一年和哪个月中有多少客户...
java spring-boot spring-data-jpa hashmap
1个回答
0
投票
看看是否能解决您的问题
© www.soinside.com 2019 - 2024. All rights reserved.