#java #oop #file-io #java-8 #java-stream
#java #ооп #file-io #java-8 #java-stream
Вопрос:
Я пытаюсь прочитать файл, чтобы записать параметры, которые будут переданы объектам, используя Java 8 stream.
Формат файла:
10 AA
15 ББ
20 куб. см
Должно быть создано столько же объектов, сколько и количество строк, объекты принимают эти параметры.
например, объект a = новый объект (10, AA).
В файле всегда будет максимум 3 строки.
Я дошел до того, что прочитал файл, проверил, начинается ли он с цифры, разделил его на новую строку и поместил каждую строку в список String[ ].
List<String[]> input = new ArrayList<>();
try {
input = Files.lines(Paths.get("C:\Users\ubaid\IntelliJ Workspace\Bakery\input.txt")).
filter(lines->Character.isDigit(lines.trim().charAt(0))).map(x-> x.split("\r?\n")).collect(Collectors.toList());
} catch (IOException e) {
e.printStackTrace();
}
for(String a[] : input){
for(String s : a){
System.out.println(s);
}
}
Комментарии:
1. В чем вопрос?
2. @Fureeish: Как создавать объекты с помощью stream и считывать параметры из файла. Это уже решено. Спасибо
Ответ №1:
Предполагая, что у вас есть:
public class Type {
private int number;
private String text;
// constructor and other methods
}
И файл хорошо отформатирован:
List<Type> objs = Files.lines(path)
.map(s -> s.split(" "))
.map(arr -> new Type(Integer.parseInt(arr[0]), arr[1]))
.collect(Collectors.toList());
System.out.println(objs);
Комментарии:
1. Или
s.split(" ", 2)
, чтобы не искать дополнительные вхождения разделителя.