GroupingBy в потоках Java 8 с более чем тремя уровнями группировки ⇐ JAVA
GroupingBy в потоках Java 8 с более чем тремя уровнями группировки
Мне нужно сгенерировать выходной json, как показано ниже
{ "счет":{ "Альфа":{ "СТАРЫЙ":{ "long":"zerozerooneO", "короткий":"001O" }, "НОВЫЙ":{ "long":"zerozerooneN", "короткий":"001N" } }, "Бета":{ "СТАРЫЙ":{ "long":"zerozerooneO", "короткий":"001O" }, "НОВЫЙ":{ "long":"zerozerooneN", "короткий":"001N" } } } } Из списка объектов с примером ниже
[ { "codetype":"Альфа", "shortOldCode":"001O", "longOldCode":"zerozerooneO", "shortNewCode":"001N", "longNewCode":"zerozerooneN" }, { "codetype":"Бета", "shortOldCode":"001O", "longOldCode":"zerozerooneO", "shortNewCode":"001N", "longNewCode":"zerozerooneN" } ] Я пробовал что-то подобное
Map newList = new HashMap(); новыйСписок = dataMap.stream() .filter(distinctByKey(код -> code.getCodeType())).collect( groupingBy((GetCodeTypes a) -> "учетная запись", groupingBy((GetCodeTypes b) -> b.getCodeType(), groupingBy((GetCodeTypes c) -> "СТАРЫЙ", отображение( v -> { GetCodeTypesResponse.Old oldCode = новый GetCodeTypesResponse.Old(); oldCode.setLongs(v.getLongOldCode()); oldCode.setShorts(v.getShortOldCode()); вернуть старый код; }, к списку()))))); Надеюсь, что кто-нибудь сможет указать мне правильное направление, чтобы получить желаемый результат с использованием хеш-карты в Java 8. Я знаю, что группировка/сопоставление с помощью записи может работать с новой версией Java, но проект, над которым я работаю, - это Java 1.8, и я бы это сделал. хотелось бы использовать Java Streams для решения этой проблемы, если это возможно.
Мне нужно сгенерировать выходной json, как показано ниже
{ "счет":{ "Альфа":{ "СТАРЫЙ":{ "long":"zerozerooneO", "короткий":"001O" }, "НОВЫЙ":{ "long":"zerozerooneN", "короткий":"001N" } }, "Бета":{ "СТАРЫЙ":{ "long":"zerozerooneO", "короткий":"001O" }, "НОВЫЙ":{ "long":"zerozerooneN", "короткий":"001N" } } } } Из списка объектов с примером ниже
[ { "codetype":"Альфа", "shortOldCode":"001O", "longOldCode":"zerozerooneO", "shortNewCode":"001N", "longNewCode":"zerozerooneN" }, { "codetype":"Бета", "shortOldCode":"001O", "longOldCode":"zerozerooneO", "shortNewCode":"001N", "longNewCode":"zerozerooneN" } ] Я пробовал что-то подобное
Map newList = new HashMap(); новыйСписок = dataMap.stream() .filter(distinctByKey(код -> code.getCodeType())).collect( groupingBy((GetCodeTypes a) -> "учетная запись", groupingBy((GetCodeTypes b) -> b.getCodeType(), groupingBy((GetCodeTypes c) -> "СТАРЫЙ", отображение( v -> { GetCodeTypesResponse.Old oldCode = новый GetCodeTypesResponse.Old(); oldCode.setLongs(v.getLongOldCode()); oldCode.setShorts(v.getShortOldCode()); вернуть старый код; }, к списку()))))); Надеюсь, что кто-нибудь сможет указать мне правильное направление, чтобы получить желаемый результат с использованием хеш-карты в Java 8. Я знаю, что группировка/сопоставление с помощью записи может работать с новой версией Java, но проект, над которым я работаю, - это Java 1.8, и я бы это сделал. хотелось бы использовать Java Streams для решения этой проблемы, если это возможно.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Объединить глубокие строки массива с тремя уровнями с помощью ключей второго уровня.
Anonymous » » в форуме Php - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Collectors.groupingBy() возвращает результат, отсортированный в порядке возрастания Java
Anonymous » » в форуме JAVA - 0 Ответы
- 39 Просмотры
-
Последнее сообщение Anonymous
-