我有以下的HashMap(称为“trafficInput”)和城市。每个城市都包含一个以毫秒为单位的每日时间戳列表,每个时间戳点还有两个数据点。一个城市(“巴黎”)为空:如何将一个ArrayList添加到Java中的Hashmap中
{"paris":[],"london":[[1485907200000,182184411,41274],[1485993600000,151646118,36697],[1486080000000,48486138,18998],[1486166400000,5405780,5246],[1486252800000,1194440,1370]],"zurich":[[1485907200000,30200160,155827],[1485993600000,26681354,160269]]}
我想通过此HashMap迭代,自2017年2月1日,添加任何日常时间戳(0为其他两个数据点),直到今天,如果他们尚未列入清单。所以,最佳的输出将是:
{"paris":[[1485907200000,0,0],[1485993600000,0,0],[1486080000000,0,0],[1486166400000,0,0],[1486252800000,0,0]],"london":[[1485907200000,182184411,41274],[1485993600000,151646118,36697],[1486080000000,48486138,18998],[1486166400000,5405780,5246],[1486252800000,1194440,1370]],"zurich":[[1485907200000,30200160,155827],[1485993600000,26681354,160269],[1486080000000,0,0],[1486166400000,0,0],[1486252800000,0,0]]}
我已经编写了以下内容:
long startTime = 1485907200; // 01 Feb 2017 00:00:00 GMT
long currentTime = (System.currentTimeMillis()/1000L);
while (startTime < currentTime) {
for (String city : trafficInput.keySet()) {
for (long[] cityAllValues : trafficInput.get(city)) {
long[] newCityValues = {startTime*1000, 0, 0};
ArrayList newCityValuesList = new ArrayList<>();
newCityValuesList.add(newCityValues);
trafficInput.put(city, newCityValuesList);
}
}
startTime = startTime+86400;
}
不幸的是,代码简单的覆盖所有现有值,而不附加它们。我在这里错过了什么?
'newCityValuesList.addAll(trafficInput.get(city));'put'之前? –
这个一般看起来不像OOP那样。看来你应该创建代表你的模型的类(城市有一系列包含你的数据的对象) –