У меня есть класс Java типа Project
, который содержит карту типа Process
, а класс Process впоследствии содержит карту типа Activity
.
public class Project {
private String name;
private Path path;
private Map<String, Process> processes;
//getters and setters
}
public class Process {
private String name;
private String path;
private Map<String, Activity> activities;
//getters and setters
}
public class Activity {
private String name;
private String type;
//getters and setters
}
Я пытаюсь написать функциюкоторый вернет Stream
из Process
или Process.path
, где Process
содержит хотя бы одно действие, имеющее type="starter"
т.е. Activity.type="starter"
.
Я пришел с приведенным ниже кодом, но он возвращаетStream<Activity>
, тогда как я ищу Stream<Process>
или Stream<String>
, содержащий path
.
project.processes.values().stream()
.flatMap(process -> process.getActivities().values().stream()
.filter(activity -> "starter".equals(activity.getType())));
Какой самый эффективный способ сделать это?