Java lambda帮助——对对象列表的多个成员变量执行操作



如果我想添加列表甚至数组的所有值,我可以使用:

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);
})

最新更新