Как сделать группировку с помощью коллекторов

Я извлекаю данные из базы данных MongoDB и сохраняю их в JSONObject после того, как каждый раз добавляю JSONObject в список, чтобы создать группу с помощью коллекторов (по дате). Я уверен, что код группы работает правильно, так как я проверил их на простом примере, но проблема у меня в этом отображении

 while (traficCursor.hasNext()) {
        try {
            DBObject next = traficCursor.next();
            wordsArray = next.get("Date").toString().split("\\s+");
            jsonObject.put("DateComplete",wordsArray[0]);
            jsonObject.put("Heure",wordsArray[1]);
            for (String mapKeyInfo : next.keySet()) {
                jsonObject.put(mapKeyInfo,next.get(mapKeyInfo));
            }
            data.add(jsonObject);

        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
try {
        Map<Object, List<JSONObject>> groupbydate = data.stream()
                .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();
    }

[{"id_arc_trafic":"1","taux":"1360","DateComplete":"24.01.2018","_id":"5ce66598a4021f9e6224c699","debit":"61","Heure": "18:00","Дата":"24/01/2018 18:00"},{"id_arc_trafic":"1","taux":"1360","DateComplete":"24/01/2018" ,"_id":"5ce66598a4021f9e6224c699","дебет":"61","Час":"18:00","Дата":"24/01/2018 18:00"},{"id_arc_trafic":"1 ","taux":"1360","DateComplete":"24/01/2018","_id":"5ce66598a4021f9e6224c699","дебет":"61","Heure":"18:00","Дата ":"24.01.2018 18:00"}] это последняя повторяющаяся строка JSONObject

это то, что я хочу, чтобы группировка по дате отображала записи по группировке записей по дате атрибута

[{"id_arc_trafic":"1","taux":"100","DateComplete":"24/01/2018","_id":"5ce66598a4021f9e6224c699","debit":"250","Heure":"18:00","Date":"25/01/2018 18:00"}]
[{"id_arc_trafic":"1","taux":"1360","DateComplete":"25/01/2018","_id":"5ce66598a4021f9e6224c699","debit":"61","Heure":"18:00","Date":"25/01/2018 18:00"}]
[{"id_arc_trafic":"1","taux":"500","DateComplete":"27/01/2018","_id":"5ce66598a4021f9e6224c699","debit":"140","Heure":"18:00","Date":"27/01/2018 18:00"}]
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
28
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

jsonObject должен быть инициализирован внутри цикла while:

jsonObject = new JSONObject();

Если вы этого не сделаете, вы обновите каждую запись data последними вставленными значениями объекта.

и data.add(jsonObject); должно быть внутри цикла или снаружи?

Aloulou Ouagdi 27.05.2019 13:52

внутри так хорошо

bear 27.05.2019 14:30

Другие вопросы по теме