将带有分隔符的String映射到字符串列表或新对象

ste*_*337 3 java java-8 java-stream

我有一个文件,其中一些数据用分号分隔.我正在尝试构建一个流,它将逐行读取文件,将每列数据分开并将其映射到新对象.

data.txt中:

John;Smith;42;shopassistant
Clara;Lefleur;24;programmer
Run Code Online (Sandbox Code Playgroud)

Person.class:

public class Person{
   String name;
   String lastName;
   int age;
   String job;
}
Run Code Online (Sandbox Code Playgroud)

我从这样的事情开始:

List<Person> people = Files.lines(Paths.get("src/data.txt"))....
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

YCF*_*F_L 5

您可以像这样使用地图:

List<Person> people = Files.lines(Paths.get("src/data.txt"))
        .map(p -> p.split(";"))//split each line with ';'
        .map(p -> new Person(p[0], p[1], Integer.valueOf(p[2]), p[3]))//create a new Person
        .collect(Collectors.toList());//then collect the result
Run Code Online (Sandbox Code Playgroud)

确保您有一个包含该信息的构造函数:

public Person(String name, String lastName, int age, String job) {
Run Code Online (Sandbox Code Playgroud)