Я только изучаю лямбда-выражения и stream(). Мне нужно написать метод для класса с именем ProgTetelek
, который находит максимальное значение элементов списка. Ограничения таковы: я должен избегать использования ключевых слов for
и if
, метода add()
и вложенных классов, но я должен использовать stream()
и ссылку на метод. Тип возвращаемого значения метода должен быть необязательным.
Кто-нибудь знает, как это решить? Решения и хорошие туториалы тоже приветствуются :)
Самым простым решением было бы это, но оно не использует ссылку на метод...
public class Progtetelek {
public static Optional<Integer> getMax(List<Integer> lista) {
return lista.stream()
.max(Comparator.comparing(i -> i));
}
}
Предписанный вызов метода
List<Integer> lista = new ArrayList<Integer>();
lista.addAll(Arrays.asList(1, 5, 8, 7, 34, 23, 11, 84, 56));
System.out.println("Legnagyobb elem: " + ProgTetelek.getMax(lista).get());
Вы можете использовать Integer::compare
:
public static Optional<Integer> getMax(List<Integer> lista) {
return lista.stream()
.max(Integer::compare);
}
да, это... Я был ненаблюдателен, извините.