是否可以使用源映射中的数据使用KV对另一个Hashmap填充Hashmap。例如,我们假设我们有一个如下所示的地图:
Map<Position,Place> positionMap = new HashMap<Position,Place>();
现在考虑Place类包含字符串category
和Position
对象。
是否可以使用循环将位置对象从positionMap传输到categoryMap,并使用Place-object中找到的category
字符串作为新HashMap的键,其值将是地方呢?所以一组包含A类的所有地方,一组包含B类的地方。
Map<String,Set<Place>> categoryMap = new HashMap<String,Set<Place>>();
答案 0 :(得分:1)
您需要groupingBy
操作:
Map<String,Set<Place>> categoryMap = positionMap().values().stream()
.collect(Collectors.groupingBy(Place::getCategory, Collectors.toSet()));
但是,您希望收集到Set<Place>
,因此您必须为equals()
课程实施hashcode()
和Place
。