如果我想添加列表甚至数组的所有值,我可以使用:
List<MyObject> newList = ...
myObjects.stream().forEach(x -> newList.add(x));
然而,如果我不想对整个对象执行此操作,而是想对对象的成员变量执行操作,这些值也在列表中,该怎么办?
如果我不使用lambdas,我会写这样的代码:
List<String> var1list = ...
List<String> var2list = ...
for (MyObject myObject : myObjects) {
var1List.addAll(myObject.getVar1Values());
var2List.addAll(myObject.getVar2Values());
}
请给我一些关于写这种表达式的正确方法的提示(即使最好的解决方案是不使用lambdas(,以及为什么这是正确的方法。
我认为您正在尝试循环myobject,并尝试对其进行一些逻辑处理。
应该是这样。
List<String> var1list = new ArrayList<String>();
List<String> var2list = new ArrayList<String>();
List<MyObject> myObjects = Arrays.asList(new MyObject("1", "2"), new MyObject("3", "4"));
myObjects.forEach((obj)->{
var1list.add(obj.getVar1());
var2list.add(obj.getVar2());
});
你是这个意思吗?
myObjects.stream()
.map((it) -> it.getVar1Values())
.forEach((it) ->{
var1List.addAll(it);
var2List.addAll(it);
})