如何使用JSONObject列表制作Arrays.stream

时间:2019-05-23 09:53:45

标签: java

我有一个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();
   }

0 个答案:

没有答案