我需要将一组对象转换为一个映射,该映射的键是对象属性中的某个唯一值,并且我想使用Java流进行转换。
例如,有一个 `List`,我想将其转换为一个 `HashMap`,其中键是狗的年龄,值是品种的 `Set`。
我可以使用这个语句创建一个
例如,有一个 `List`,我想将其转换为一个 `HashMap`,其中键是狗的年龄,值是品种的 `Set`。
@Getter //lombok for getters
public class Dog {
private String name;
private int age;
private int breed;
}
我可以使用这个语句创建一个
Map<Integer, Set<Dog>> dogsByAge
对象。Map<Integer, Set<Dog>> dogsByAge = dogs.stream()
.collect(groupingBy(Dog::getAge, toSet()));
然而我需要 Map<Integer, Set<String>> breedsByAge
使用流操作能实现这个吗?
groupingBy(Dog::getAge, Collectors.mapping(Dog::getBreed, toSet))
- Eugene@Data
不是一个很好的选择,应该使用@Getter
。 - Michal Krasny