Reputation: 738
In my stream I want to get MainMenuOption based on user's input. If enum MainMenuOptions contains such option I want to return it, if not - print some message "THERE IS NO SUCH OPTION" and get user's input again.
return Arrays.stream(MainMenuOptions.values())
.filter(x -> x.getCommand().equals(ConsoleInput.getNextLineFromUser()))
.findFirst() // it returns Optional<MainMenuOptions>
.orElse(); //or Else return some value, cannot do something
How I can achive it with Java Steams?
Thank you in advance.
Upvotes: 3
Views: 197
Reputation: 31888
Use a Optional.map
operation before orElse
to transform to Optional<String>
such as
return Arrays.stream(MainMenuOptions.values())
.filter(x -> x.getCommand().equals(ConsoleInput.getNextLineFromUser()))
.findFirst()
.map(MainMenuOptions::name)
.orElse("THERE IS NO SUCH OPTION");
Upvotes: 5