我有以下嵌套的for循环,由于我当前正在学习使用流,因此我希望将其转换为使用流,我该怎么做?
我在下面添加了当前尝试,但目前尚未完成。
Part part = getPart();
List<Machines> machines = new ArrayList<>();
List<String> identities = getMachineIdentities();
Set<MachinePart> machineParts = new HashSet<>();
//create machines
for (String identity : identities) {
Machine machine = getMachine(identity);
machines.add(machine);
}
//map to MachineParts
for (Machine machines : machines) {
MachinePart machinePart = MachinePartCreator.new(machines, part);
machineParts.add(machinePart);
}
流尝试:
Set<MachinePart > machineParts = identities.stream()
.map(identity-> ??? ).collectors.collect(Collectors.toSet()));
这不是嵌套循环。第一个循环为第二个循环创建输入。这可以通过两个map()
调用来实现:
Set<MachinePart> machineParts =
identities.stream()
.map(id -> getMachine(id))
.map(m -> MachinePartCreator.new(m, part))
.collect(Collectors.toSet());
甚至一个:
Set<MachinePart> machineParts =
identities.stream()
.map(id -> MachinePartCreator.new(getMachine(id),part))
.collect(Collectors.toSet());