收集加入Java 8进行设置

Baz*_*uka 7 java-8 java-stream

嗨我想要一个字符串代表每个老师的名字串联,因此我需要使用两者Collectors.toSet, Collectors.joining(", ")如何在1个组合线中使用它们?我只能分别制作其中的每一个我怎样才能做到这两个?

students.stream().collect(Collectors.groupingBy(student -> student.getTeacherName(), mapping(student -> student.getName(), toSet())


students.stream().collect(Collectors.groupingBy(student -> student.getTeacherName(), mapping(student -> student.getName(), joining(", "))
Run Code Online (Sandbox Code Playgroud)

JB *_*zet 5

你应该可以使用collectingAndThen():

students.stream()
        .collect(groupingBy(Student::getTeacherName, 
                 mapping(Student::getName, 
                         collectingAndThen(toSet(), set -> String.join(", ", set)))))
Run Code Online (Sandbox Code Playgroud)