I’m new to Java I have an array like below
JavaScript
x
[{'roleName': "driver", "name": "Hub"},{'roleName': "hoc", "name": "Org"},{'roleName': "hubManager", "name": "Hub"}]
I have to format the same into below structure
JavaScript
{
Org :{
role : ["hoc"]
}
Hub: {
role :
["driver","hubManager"]
}
}
Please help me how we can do this with Java streams
I have tried the below
JavaScript
List<String> roles = roleLevels
.stream()
.map(c -> c.getRoleName()).collect(Collectors.toList());
But that’s not the expected result
Advertisement
Answer
Use groupingBy with downstream Collector:
JavaScript
Map<String, List<String>> result =
roleLevels.stream()
.collect(Collectors.groupingBy(RoleManager::getName,
Collectors.mapping(RoleManager::getRole,
Collectors.toList())));