开发者社区> 问答> 正文

根据Java 8中的相同名称条件将所有哈希图放在一起

public class PersonAgg {

public static void main(String[] args) {
    List<Person> persons = new ArrayList<>();
    Map<String, Integer> age = new HashMap<>();
    Map<String, Integer> age2 = new HashMap<>();
    Map<String, Integer> age3 = new HashMap<>();
    Map<String, Integer> age4 = new HashMap<>();
    age.put("One", 1);
    age2.put("Two", 2);
    age3.put("Three", 3);
    age4.put("Four", 4);
    persons.add(new Person("Ajay", age));
    persons.add(new Person("Vijay", age2));
    persons.add(new Person("Ajay", age3));
    persons.add(new Person("Vijay", age4));

}

}

class Person {

public Person(String name, Map<String, Integer> age) {
    super();
    this.name = name;
    this.age = age;
}

private String name;
private Map<String, Integer> age;

现在我想要输出: {name : Ajay, HashMapValue : {age :["One",1],} age3 :["Three",3]}, {name : Vijay , HashMapValue : {age2 :["Two",2],} age4 :["Four",4]}

问题来源:stackoverflow

展开
收起
七天一失眠 2020-04-04 18:43:42 1424 0
1 条回答
写回答
取消 提交回答
  • 做一个优秀的阿里云志愿者

    您可以尝试如下操作:

    Map<String, Map<String, Integer>> grouped = persons.stream()
    .collect(toMap(Person::getName, Person::getAge, (p1, p2) -> {
        p1.putAll(p2);
        return p1;
    }));
    
    -------
    

    答案来源:stackoverflow

    2020-04-04 18:43:53
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载