Java 8 收集以设置加入Java 8

Java 8 收集以设置加入Java 8,java-8,java-stream,Java 8,Java Stream,嗨,我想用一个字符串来表示每个老师的一组名字的串联, 因此,我需要同时使用收集器.toSet和收集器。如何在一行中使用它们? 我只能分别制作它们中的每一个。我如何才能同时制作这两个呢 students.stream().collect(Collectors.groupingBy(student -> student.getTeacherName(), mapping(student -> student.getName(), toSet()) students.stream().

嗨,我想用一个字符串来表示每个老师的一组名字的串联, 因此,我需要同时使用
收集器.toSet
收集器。如何在一行中使用它们?
我只能分别制作它们中的每一个。我如何才能同时制作这两个呢

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(", "))

我想你已经知道怎么制作这套了。我们称之为
teacherSet

您想在生成集合后重新流式传输:

// create teacher set...
teacherSet.stream().collect(Collectors.joining(","));
您也可以在使用生成集合后加入。以下是一个例子:

String.join(",", Arrays.stream("1,2,3,4,3,2,1".split(",")).collect(Collectors.toSet());
或者在您的情况下:

// create teacher set...
String.join(",", teacherSet);

您应该能够使用
collectingAndThen()


也可以这样做:。。。。collectingand然后(toSet(),set->set.stream()。collect(连接(“,”)以便能够在流上添加更多操作,例如筛选或排序
students.stream()
        .collect(groupingBy(Student::getTeacherName, 
                 mapping(Student::getName, 
                         collectingAndThen(toSet(), set -> String.join(", ", set)))))