2

First I need to check if data is present in list then get else set default or empty value on a Java 8 stream.

Currently I am using below code without isPresent but I dont know how to use isPresent in java8.

I am trying something below which is not perfect:

String isScheme = (this.mapProgramApproaches.stream().findFirst().isPresent())? this.mapProgramApproaches.stream().findFirst().get().getIsScheme().toString() : "0";

Where as mapProgramApproaches this is set.

DNA
42.7k12 gold badges114 silver badges153 bronze badges
asked May 4, 2017 at 11:49

3 Answers 3

6

Don't use isPresent() (it makes no sense to run the Stream pipeline twice).

You can use map to map the value of the Optional to the required String, and then use orElse() to return a default value when the Optional value is not present:

String isScheme = this.mapProgramApproaches.stream()
 .findFirst()
 .map(o->o.getIsScheme().toString())
 .orElse("0");
answered May 4, 2017 at 11:51
Sign up to request clarification or add additional context in comments.

Comments

4

Maybe you are looking for something like this:

String isScheme = this.mapProgramApproaches.stream()
 .findFirst()
 .map(p -> p.getIsScheme().toString())
 .orElse("0");
answered May 4, 2017 at 11:57

Comments

1

I'm not sure about context in which you are doing this, but I suppose that you would like to check whether some object is scheme and then do something with that. In that case I would suggest implement it like this:

List<String> mapProgramApproaches = new ArrayList<>();
mapProgramApproaches.stream()
 .filter(this::isScheme)
 .findFirst()
 .ifPresent(this::doYourCode)
 .orElse(defaultValue);

It will make your code cleaner. And will help to avoid additional conditionals!

answered May 4, 2017 at 12:17

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.