Map<String, Integer> collect = list.parallelStream().collect(Collectors.groupingBy(Entity::getKey1, Collectors.summingInt(Entity::getKey2)));
Map<String, Map<String, Map<String, Entity>>> collect = list.parallelStream().collect(Collectors.groupingBy(Entity::getOne, Collectors.groupingBy(Entity::getTwo, Collectors.toMap(Entity::getThree, Function.identity(), (key1, key2) -> key1))));
Map<Integer, List<Integer>> map = list.parallelStream().collect(Collectors.groupingBy(Entity::getId, Collectors.mapping(Entity::getId2, Collectors.toList())));