我的List
类型为Car
public class Car {
private String make;
private String model;
private Engine engine;
//getters and setters below...
}
我想从我拥有的引擎列表中更新Engine
中每个Car
的{{1}}属性。使用for循环,我将通过以下方式实现此目的:
List
如何使用Java Streams完成相同的逻辑?
如果您有更好标题的建议,请分享。
答案 0 :(得分:3)
在我看来,for loop
更具可读性,但这也可以做到这一点。
if (myListOfCars.size() == myListOfEngines.size()) {
IntStream.range(0, myListOfCars.size())
.forEach(
i -> myListOfCars.get(i).setEngine(myListOfEngines.get(i)
)
);
}
请注意,如果您复制.length()
,我已将.size()
替换为X=MsgBox("Your details from this computer are being harvested using an altered malicious build of IBM Watson.",vbExclamation+vbSystemModal+vbYesNo, "IBM Watson")
X=MsgBox("Your details from this computer are being harvested using an altered malicious build of IBM Watson.",vbCritical+vbSystemModal+vbYesNo, "IBM Watson")
。
答案 1 :(得分:0)
你需要" Zip"这两股流成了一对。
不幸的是,没有builtin stream zipping。但您可以自己创建,也可以使用其中一个建议的库。
然后只需将(car,engine) -> { car.setEngine(engine); }
应用于流。
或者,作为一个黑客:
Iterator<Engine> engine_iter = myListOfEngines.iterator();
myListOfCars.stream().forEach(
car -> { car.setEngine(engine_iter.next()); }
);