Ну, вы, конечно, можете сделать это несколькими способами, но то, что более элегантно, может варьироваться от человека к человеку.
В любом случае, если бы вы попытались сделать это через потоки, я бы сделал это следующим образом:
С небольшой модификацией мой ответ здесь вы могли бы сделать:
boolean result = fields.stream()
.map(f -> f.getField())
.distinct()
.limit(2) // ENABLE SHORT CIRCUITING
.count() != 1;
if (result) throw new IllegalArgumentException("could not match one exact element");
String distinctVal = fields.get(0).getField();
Преимущество этого подхода заключается в том, что в основном используется limit(2)
для включения оптимизации, где это возможно.
Заключение : ваш текущий подход достаточно хорош на самом деле, я не удивлюсь, если вы будете придерживаться этого подхода, но у вас также есть выбор этого подхода, когда вы можете закоротить конвейер.