I have an BOLReference object as follows:
private String ediTransmissionId;
private List<WorkflowExceptions> workflowExceptions;
And the inner WorkflowExceptions looks like below:
private String category;
private Map<String,String> businessKeyValues;
I want to get a particular Map<String,String> businessKeyValues from the list of WorkflowExceptions based on some filters. How can I do so?
Map<String,String> bKeyMap = bolRef.get(0).getWorkflowExceptions()
.stream().filter(wk->wk.getBusinessKeyValues().containsKey("ABC123"));
In order to obtain the map
businessKeyValuesthat contains a certain key, first, you need to applymap()operation to extract the map from aWorkflowExceptionsobject.Then apply
filter()operation as you've done in your code. AndfindFirst()(which returns the first encountered element in the stream) as a terminal operation.Method
findFirst()returns an optional object, because the result may or may not be present in the stream.Optionalclass offers you a wide variety of methods that allow to treat the situation when result is not present in different ways depending on your needs. Down below I've usedorElse()method that'll provide an empty map if result wasn't found.Other options you might consider:
orElseThrow(),orElseGet(),or()(in conjunction with other methods).