嗨,我正试着让一个字符串代表每个老师的名称集合,因此我需要同时使用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(", "))发布于 2016-03-29 07:10:12
您应该能够使用collectingAndThen()
students.stream()
.collect(groupingBy(Student::getTeacherName,
mapping(Student::getName,
collectingAndThen(toSet(), set -> String.join(", ", set)))))发布于 2016-03-29 07:03:42
我猜你已经知道怎么制作这套了。我们叫它teacherSet。
您想要在生成集合后重新流:
// create teacher set...
teacherSet.stream().collect(Collectors.joining(","));您还可以在使用String.join生成集合之后加入。下面是一个示例:
String.join(",", Arrays.stream("1,2,3,4,3,2,1".split(",")).collect(Collectors.toSet());或者在你的情况下:
// create teacher set...
String.join(",", teacherSet);https://stackoverflow.com/questions/36277435
复制相似问题