Я полагаю, Element::isSubElementsPresent
проверяет, что поле subElements
не является нулевым, но если вы измените код так, чтобы у вас всегда было ненулевое поле (например, пустой список), тогда мы можем построить следующий конвейер
private String getValue(int bitNo, int subFieldNo) {
Map<Integer, Element> elements = getElements();
Element element = elements.get(bitNo);
if(element == null) {
return null;
}
return element.getSubElements().stream()
.filter(se -> se.getStartPosition() == subFieldNo)
.map(SubElement::getFieldValue)
.findAny()
.orElseGet(element::getFieldValue);
}
в любом случае это не будет быстрее, чем у вас уже есть