我有一个JSONObjects列表 我向每个迭代添加一个JSON对象。最后,我希望有一个JSON对象列表,除了Arrays.stream不考虑列表之外,我想使用收集器进行分组。因此,我尝试声明一个JSONObject数组并将其添加到列表中,但分组依据不起作用。还有其他解决方案吗?
JSONObject列表
List<JSONObject> data = new ArrayList<>();
要添加到Arrays.stream中的数组
JSONObject[] examples = null;
while (traficCursor.hasNext()) {
try {
wordsArray = traficCursor.next().get("Date").toString().split("\\s+");
String[] fieldNames = {"Date", "Heure"};
for (int i = 0; i < wordsArray.length; i++) {
data.add(new JSONObject().put(fieldNames[i],wordsArray[i]));
data.add(new JSONObject().put("debit",traficCursor.next().get("debit")));
}
} catch (Exception e) {
e.printStackTrace();
}
while (infoClimatCursor.hasNext()) {
for (String mapKeyInfo : infoClimatCursor.next().keySet()) {
try {
data.add(new JSONObject().put(mapKeyInfo,infoClimatCursor.next().get(mapKeyInfo)));
} catch (Exception e) {
}
}
}
}
将列表添加到数组
examples = new JSONObject[]{
new JSONObject(data)
};
try {
按日期分组
Map<Object, List<JSONObject>> groupbydate = Arrays.stream(examples)
.map(json -> new AbstractMap.SimpleEntry<>(json.getString("Date"), json))
.collect(Collectors.groupingBy(Map.Entry::getKey, Collectors.mapping(Map.Entry::getValue, Collectors.toList())));
groupbydate.entrySet().forEach(gbd -> System.out.println(gbd.getValue()));
}catch (Exception e){
e.printStackTrace();
}