логическое не может быть разыменовано в функциональном программировании Java - PullRequest
0 голосов
/ 01 декабря 2018

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

public void printCountSightingsOf(String animal)
{
    sightings.stream()
             .filter(s -> s.getAnimal().equalsIgnoreCase(animal) 
             .map(sa -> sa.getCount())
             .reduce(0, (total, s) -> total + s));
    System.out.println(sightings);
}

Он должен получить список наблюдений за животными в парке из файла и преобразовать его в поток.Затем он должен отфильтровать этот список, чтобы получить данные наблюдений только за конкретным животным.Затем функция map должна преобразовать этот список в список типа int, где каждый элемент - это количество раз, когда это животное кто-то видел.В конце концов, он должен уменьшить этот список до уникальной суммы и вывести это число.Ошибка в строке .map.Это дает мне эту ошибку:

Булево не может быть разыменовано.WHYYYYY?XD

1 Ответ

0 голосов
/ 01 декабря 2018

В вашем коде отсутствует закрывающая скобка в строке перед .map:

sightings.stream()
         .filter(s -> s.getAnimal().equalsIgnoreCase(animal) 
         // missing bracket                            here ^
         .map(sa -> sa.getCount())
         .reduce(0, (total, s) -> total + s));
         // redundant bracket          here ^

Правильный код

sightings.stream()
         .filter(s -> s.getAnimal().equalsIgnoreCase(animal)) 
         .mapToInt(sa -> sa.getCount())
         .sum();
...