I am facing a problem in iterating over a List inside an Object which is embedded inside another map. My objective is to iterate over this list and produce a map<String,String>, I want to achieve this using streams and lamdas.
public class ModelBO {
private String id;
private String name;
private String version;
private Map<String, FolderBO> folderValues = null;
}
public class FolderBO {
private String id;
private String name;
private String type;
private Map<String, String> properties;
private List<ElementBO> elements = new ArrayList<ElementBO>();
}
public class ElementBO {
private String id;
private String name;
private String type;
}
I seen above i need to create a map with map<id,name> from the elementBo by iterating over elementList which is inside the folderBo. The folderBo itself is inside the map of ModelBo.
I have written the following code.
Map<String,String> elementMap =
UniModelBO.getInstance().getFolderValues().entrySet().stream()
.filter(entrySet -> entrySet.getKey()!="relations")
.map(entrySet -> entrySet.getValue().getElements()::stream)
.collect(Collectors.toMap(ElementBO::getName, ElementBO::getId));
UniModelBO is utility class that creates a singleton object for ModelBo.