Отображение строки с разделителями в список строк или новый объект - PullRequest
0 голосов
/ 24 августа 2018

У меня есть файл с некоторыми данными, разделенными точкой с запятой.Я пытаюсь создать поток, который будет построчно читать файл, отделять каждый столбец данных и сопоставлять его с новым объектом.

data.txt:

John;Smith;42;shopassistant
Clara;Lefleur;24;programmer

Person.класс:

public class Person{
   String name;
   String lastName;
   int age;
   String job;
}

Я начал примерно так:

List<Person> people = Files.lines(Paths.get("src/data.txt"))....

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

A Scanner было бы более полезным для этой работы, а с java-9 работать с ним гораздо приятнее:

Pattern p = Pattern.compile("^(\\w+);(\\w+);(\\w+);(\\w+)$", Pattern.MULTILINE);
List<Person> persons = new Scanner(Paths.get("src/data.txt"))
            .findAll(p)
            .map(mr -> new Person(mr.group(1), mr.group(2), Integer.valueOf(mr.group(3)), mr.group(4)))
            .collect(Collectors.toList());
0 голосов
/ 24 августа 2018

Вы можете использовать карту так:

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

Убедитесь, что у вас есть конструктор, содержащий эту информацию:

public Person(String name, String lastName, int age, String job) {
...