У меня есть структура данных, как показано ниже. Я пытаюсь сгруппировать объекты таким образом, как Map, где ключ — это идентификатор записи, а значение — это список групп, которым он принадлежит. Идентификатор записи всегда уникален внутри группы.
Пример: идентификатор записи «1111» принадлежит группам group1,group2,group3. Я использую старый способ Java 7 для перебора списков и проверки. Есть ли лучший способ использовать сборщики/группировки Java8 для достижения этой цели?
List, где каждый объект Group будет иметь список объектов Entry.
[
{
"id":"group1",
"entries":[
{
"entryId":"1111",
"name":"test1"
},
{
"entryId":"2222",
"name":"test2"
},
{
"entryId":"3333",
"name":"test3"
}
]
},
{
"id":"group2",
"entries":[
{
"entryId":"4444",
"name":"test1"
},
{
"entryId":"1111",
"name":"test2"
},
{
"entryId":"2222",
"name":"test3"
}
]
},
{
"id":"group3",
"entries":[
{
"entryId":"1111",
"name":"test1"
},
{
"entryId":"5555",
"name":"test2"
},
{
"entryId":"3333",
"name":"test3"
}
]
}
]
Итак, ожидаемый результат таков:
[
{
"1111":[
"group1",
"group2",
"group3"
]
},
{
"2222":[
"group1",
"group2"
]
},
{
"3333":[
"group1",
"group3"
]
},
{
"4444":[
"group2"
]
},
{
"5555":[
"group3"
]
}
]
Сейчас я использую указанный ниже способ. который работает так, как ожидалось, но есть ли в Java 8 гораздо более простой способ добиться этого.
public Map mapEntries(List groups) {
Map entryMaps = new HashMap();
for (Group group : groups) {
for (Entry entry : group.getEntries()) {
List groupsEntryBelongs = new ArrayList();
if (groups.iterator().hasNext() && !entryMaps.keySet().contains(entry.getEntryId())) {
updateGroups(groups, entry.getEntryId(), groupsEntryBelongs, entryMaps);
}
}
}
return entryMaps;
}
void updateGroups(List groups, String id, List groupsEntryBelongs, Map entryMaps) {
for (Group group : groups) {
for (Entry entry : group.getEntries()) {
if (entry.getEntryId().equalsIgnoreCase(id)) {
groupsEntryBelongs.add(group.getId());
}
}
}
entryMaps.put(id, groupsEntryBelongs);
}
Подробнее здесь: https://stackoverflow.com/questions/532 ... -in-java-8
Как сгруппировать список списков по определенным критериям в Java 8 ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Функции даты: попытка получить даты на 6 месяцев вперед по определенным критериям.
Anonymous » » в форуме Python - 0 Ответы
- 9 Просмотры
-
Последнее сообщение Anonymous
-