如何在 java 流中构建实体?
How to build an entity in java stream?
有实体:
@SuperBuilder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
private String name;
private Integer age;
我顺流而下,在建筑工人的帮助下收集了我的学生名单
public List<Student> getStudent(Inputstream students) {
return new BufferedReader(new InputStreamReader(students)).lines()
.map(String::trim)
.filter(line -> line.startsWith("a"))
.map(line ->
Student.builder()
.name(line.substring(0, line.indexOf("this name")))
.age(line.substring(line.indexOf("name")))
.build())
.collect(Collectors.toList());
}
生成器的这种用法是否正确?
是的,这个用法是正确的。你不会违反我熟悉的任何规则和模式。此外,您可以像这样进行一些重构:
public List<Student> getStudent(Inputstream students) {
return new BufferedReader(new InputStreamReader(students)).lines()
.map(String::trim)
.filter(line -> line.startsWith("a"))
.map(this::makeStudent)
.collect(toList());
}
private Student makeStudent(final String source){
return Student.builder()
.name(source.substring(0, source.indexOf("this name")))
.age(source.substring(source.indexOf("name")))
.build();
}
有实体:
@SuperBuilder
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
private String name;
private Integer age;
我顺流而下,在建筑工人的帮助下收集了我的学生名单
public List<Student> getStudent(Inputstream students) {
return new BufferedReader(new InputStreamReader(students)).lines()
.map(String::trim)
.filter(line -> line.startsWith("a"))
.map(line ->
Student.builder()
.name(line.substring(0, line.indexOf("this name")))
.age(line.substring(line.indexOf("name")))
.build())
.collect(Collectors.toList());
}
生成器的这种用法是否正确?
是的,这个用法是正确的。你不会违反我熟悉的任何规则和模式。此外,您可以像这样进行一些重构:
public List<Student> getStudent(Inputstream students) {
return new BufferedReader(new InputStreamReader(students)).lines()
.map(String::trim)
.filter(line -> line.startsWith("a"))
.map(this::makeStudent)
.collect(toList());
}
private Student makeStudent(final String source){
return Student.builder()
.name(source.substring(0, source.indexOf("this name")))
.age(source.substring(source.indexOf("name")))
.build();
}