У меня есть какой-то сценарий ios необходимо преобразовать объект из List<Class A>
в Map<String, List<Class B>>
. Я пытаюсь сгруппировать информацию по одному из полей в классе A и удалить ненужное поле из класса A (результат в классе B)
В настоящее время я могу сделать это с помощью приведенного ниже примера кода.
// Raw data input
List<TestClass> itemList = new ArrayList<>();
// Add items here...
// group by field
Map<String, List<TestClass>> result = itemList.stream()
.collect(Collectors.groupingBy(TestClass::getUsername));
// Reform every single list and add to a new Map
Map<String, List<TestClassShort>> tcsMap = new HashMap<>();
for (Map.Entry<String, List<TestClass>> tc: result.entrySet()) {
tcsMap.put(tc.getKey(),
tc.getValue().stream()
.map(x -> new TestClassShort(x.getGroupId(), x.getGroupName()))
.collect(Collectors.toList()));
}
Возможно ли достичь цели, не создавая дополнительную промежуточную хэш-карту?