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)))))