Java 如何使用<;的哈希映射添加增量值;整数,HashMap<;整数,整数>;
我有一个名为client的表,其中有一列名为created_time,所以实际上我想绘制一个地图,这样我就可以知道在哪一年和哪一个月添加了多少个客户端?现在的问题是假设2018年11月增加了2个客户,2018年12月增加了0个客户,因此12月我也将显示2个(与上述月份+当前月份类似),如果2019年1月增加了1个客户,那么我将显示3个,以此类推 因此,为了解决这个问题,我创建了一个hashMap,其中第一个键是year,我制作了另一个hashMap,其中键是month,然后是添加的客户端号,例如hashMap> 预期输出::Java 如何使用<;的哈希映射添加增量值;整数,HashMap<;整数,整数>;,java,spring-boot,spring-data-jpa,hashmap,Java,Spring Boot,Spring Data Jpa,Hashmap,我有一个名为client的表,其中有一列名为created_time,所以实际上我想绘制一个地图,这样我就可以知道在哪一年和哪一个月添加了多少个客户端?现在的问题是假设2018年11月增加了2个客户,2018年12月增加了0个客户,因此12月我也将显示2个(与上述月份+当前月份类似),如果2019年1月增加了1个客户,那么我将显示3个,以此类推 因此,为了解决这个问题,我创建了一个hashMap,其中第一个键是year,我制作了另一个hashMap,其中键是month,然后是添加的客户端号,例如
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 clientsByYear=newhashmap();
List clientList=clientRepository.findAll();
对于(int i=0;i=0;j--){
if(clientByMonth.containsKey(j)){
clients=clients+clientByMonth.get(j);
打破
}
}
clientByMonth.put(月,(客户+1));
}else if(clientByMonth.containsKey(月)){
int clients=clientByMonth.get(月);
clientByMonth.put(月,(客户+1));
}
}
}
请参见下文,如果我正确理解了您的问题,应该可以解决您的问题
用于(int i=1;i Hi Vatsal-你的程序面临什么问题?你有没有遇到任何错误。没有,我没有遇到任何错误,只是没有正确地总结,我得到了错误的输出谢谢你的努力,但我必须每月添加客户数量,这就是我遇到的问题,所以这给了我一个正确的输出在2018年10月,有2个客户,但如果11月没有新增客户,我需要显示上个月的价值,如果新增,则上个月的客户数量+本月的新客户数量,我现在就知道了。因此,8月的客户数量将是11月客户数量的基础,这是仅在该年吗?我的意思是,是2018年12月的价值,传递给J2019年?正确?如果为真,数据列表是否按时间排序?是和是,值也将传递到2019年1月,并将继续添加,就像在2018年尝试编写伪代码一样。请原谅。检查答案,假设数据在进入循环之前按月/年排序。感谢您的努力,是列表只有2018年及其月份符合要求,然后是2019年及其月份符合要求
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));
}
}
}
for (int i = 1; i <=clientList.size() ; i++) {
...
if (!clientsByYear.containsKey(year)) {
HashMap<Integer, Integer> clientByMonth = new HashMap<>();
clientByMonth.put(month, i);
clientsByYear.put(year, clientByMonth);
} else {
HashMap<Integer, Integer> clientByMonth = clientsByYear.get(year);
clientByMonth.put(month, i);
}
}
System.out.println(clientsByYear);
}