Каждый ответ здесь использует flatMap
, который до java-10 не ленится .В вашем случае это будет означать, что alertActions
пройден полностью, а в примере цикла for - нет.Вот упрощенный пример:
static class User {
private final List<String> nickNames;
public User(List<String> nickNames) {
this.nickNames = nickNames;
}
public List<String> getNickNames() {
return nickNames;
}
}
И некоторое использование:
public static void main(String[] args) {
Arrays.asList(new User(Arrays.asList("one", "uno")))
.stream()
.flatMap(x -> x.getNickNames().stream())
.peek(System.out::println)
.filter(x -> x.equalsIgnoreCase("one"))
.findFirst()
.get();
}
В java-8
это напечатает и one
и uno
,так как flatMap
не ленив.
С другой стороны, в java-10
это напечатает one
- и это то, что вас волнует, если вы хотите, чтобы ваш пример был переведен в stream-based
1 в1.