想问一个各位大牛技术问题,这个操作用 java8 分组怎么做?

有一个对象集合
Stream stream = Stream.of(new People(\”张三\”,\”老师\”),new People(\”李四\”,\”学生\”),new People(\”王五\”,\”校长\”));

想通过分组得类似于这样的分组 Map<Boolean,List<People>> ;

当为 true 时,List 集合为 {\”张三\”,\”李四\”,\”王五\”)

当为 false 时候,list 集合为{\”张三老师\”,\”李四学生\”,\”王五校长\”};

相关文章

2 thoughts on “想问一个各位大牛技术问题,这个操作用 java8 分组怎么做?

  1. 问题描述得一堆错误,尝试理解下你的意图:

    var people = List.of(new Person(“张三”,”老师”),new Person(“李四”,”学生”),new Person(“王五”,”校长”));
    var result = Map.of(true, people.stream().map(Person::getName).collect(Collectors.toList()),
    false, people.stream().map(Person::getNameWithRole).collect(Collectors.toList()));

  2. 另外一个思路:

    var result = people.stream().flatMap(p -> Steam.of(Pair.of(true, p.getName()), Pair.of(false, p.getNameWithRole()))).collect(Collectors.groupingBy(Pair::getLeft, Collectors.mapping(Pair.getRight), Collectors.toList()))

  3. 更正:

    var result = people.stream().flatMap(p -> Steam.of(Pair.of(true, p.getName()), Pair.of(false, p.getNameWithRole()))).collect(Collectors.groupingBy(Pair::getLeft, Collectors.mapping(Pair::getRight, Collectors.toList()))

发表评论

电子邮件地址不会被公开。 必填项已用*标注