Java 8 stream to collect a Map of List of items
listOfData.stream() .flatMap(e -> e.entrySet().stream()) .collect(Collectors.groupingBy(Map.Entry::getKey, Collectors.mapping(Map.Entry::getValue, Collectors.toList()))); update: Slightly different variant to user1692342‘s answer for completeness. list.stream() .map(e -> Arrays.asList(e.get(“Role”), e.get(“Name”))) .collect(Collectors.groupingBy(e -> e.get(0), Collectors.mapping(e -> e.get(1), Collectors.toList())));