将内容从HashMap A移动到HashMap B,使用来自A的值的数据作为新密钥

时间:2018-05-20 12:39:34

标签: java hashmap

是否可以使用源映射中的数据使用KV对另一个Hashmap填充Hashmap。例如,我们假设我们有一个如下所示的地图:

Map<Position,Place> positionMap = new HashMap<Position,Place>();

现在考虑Place类包含字符串categoryPosition对象。

是否可以使用循环将位置对象从positionMap传输到categoryMap,并使用Place-object中找到的category字符串作为新HashMap的键,其值将是地方呢?所以一组包含A类的所有地方,一组包含B类的地方。

Map<String,Set<Place>> categoryMap = new HashMap<String,Set<Place>>();

1 个答案:

答案 0 :(得分:1)

您需要groupingBy操作:

Map<String,Set<Place>> categoryMap = positionMap().values().stream()
      .collect(Collectors.groupingBy(Place::getCategory, Collectors.toSet()));

但是,您希望收集到Set<Place>,因此您必须为equals()课程实施hashcode()Place