Я новичок в необязательном в Java и хотел бы реализовать следующую логику.
Ввод представляет собой список строк (он не пуст).
Если список содержит шоколад, мне нужен этот элемент. В противном случае я хочу, чтобы первый элемент соответствовал шаблону .*ap.*. Если я по-прежнему не получаю элемент, мне нужен первый элемент списка.
Я уже настроил этот фрагмент кода, который выполняет эту работу, но я хочу знать, можно ли упростить этот код:
List testList = Arrays.asList("banana", "apple", "cheese", "chocolate");
String food = testList.stream()
.filter(str -> str.equals("chocolate"))
.findFirst()
.orElseGet(() -> testList.stream()
.filter(str -> str.matches(".*ap.*"))
.findFirst()
.orElseGet(() -> testList.get(0)));
Подробнее здесь: https://stackoverflow.com/questions/797 ... als-stream