У меня есть одна строка формата:
row1col1 row1col2
row2col1 row2col2
row3col1 row3col2
и т.д.
Я хочу извлечь каждый элемент и построить массив объектов со свойствами вроде этого:
new MyObject(row1col1, row1col2);
Я новичок в Java 8 и Streams, и я хотел бы узнать, как я могу добиться этого без циклов.
Обычно я использовал бы String.split('\n')
для накопления строк в массиве String
И затем цикл, в котором для каждой строки я бы снова разделился на разделитель пространства и с результирующим массивом из двух элементов (row1col1 row1col2
) построил мой объект, пока не будет больше строк для обработки.
Вот так:
String sausage = "row1col1 row1col2\nrow2col1 row2col2\nrow3col1 row3col2";
String[] rows = sausage.split("\n");
for (String row : rows) {
String[] objectData = u.split("\\s+");
MyObject myObject = new MyObject(objectData[0], objectData[1]);
myObjectList.add(myObject);
}
Может ли кто-нибудь объяснить мне, как достичь этого с потоками и какой механизм за этим позволяет мне это сделать?
Является ли это даже правильным способом мышления при увеличении количества элементов, потому что из всех примеров, которые я видел, потоки фокусируются на фильтрации, сборе или вообще заданном наборе элементов, получают второстепенный набор, применяющий некоторые критерии.