Применение метода к потоку - PullRequest
0 голосов
/ 08 октября 2018

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

Я написал функцию для разбора каждой строки.

private Food parseFoodLine(String line){
    String[] items = line.split("|");
    Food food = #Parsing done here. 
    return food;
}

Но как мне поставить каждую строку через этот метод?

private Set<Food> loadFood(){
    Set<Food> food = new HashSet<>();
    try (Stream<String> stream = Files.lines(Paths.get("myFile"))) {
        stream.forEach(parseFoodLine());
    } catch (IOException e) {
        System.err.println("Error parsing file");
    }
}

Я понимаю, что должен делать "stream.forEach (food :: add)", но как мне получить объект пищи из моего файла?

1 Ответ

0 голосов
/ 08 октября 2018

Вы можете map элементы ваших Stream<String> до Food экземпляров (через ваш parseFoodLine метод), и они используют collect, чтобы собрать их в Set:

food = stream.map(Food::parseFoodLine).collect(Collectors.toSet());

Обратите внимание, что ваш Food класс должен корректно переопределять equals и hashCode, чтобы экземпляры Food правильно сохранялись в HashSet.

...