У меня есть код, который выглядит следующим образом:
for (SomeObject object : objects) {
if (object.getSomething() == Something.SomethingHighPriority) {
return object;
}
}
for (SomeObject object : objects) {
if (object.getSomething() == Something.SomethingLowPriority) {
return object;
}
}
Он используется для получения первого элемента в коллекции по некоторому условию.Также важен приоритет.Во-первых, мне нужно найти один элемент, а просто, если он не существует, найти второй.
Я хочу переписать его с помощью Stream API, но я знаю, что потоки используются только один раз.Сейчас я переписал его таким образом, но он кажется более уродливым, чем раньше.
Optional<SomeObject> object =
objects.stream()
.filter(object -> object.getSomething() == Something.SomethingHighPriority)
.findFirst();
if (object.isPresent()) {
return object.get();
}
object = objects.stream()
.filter(object -> object.getSomething() == Something.SomethingLowPriority)
.findFirst();
// No other use cases
return object.orElse(null);
Можно ли сделать его менее шаблонным?