Lambda表达式将对象从一个列表添加到另一个列表类型

时间:2016-08-19 15:35:03

标签: java collections lambda java-8

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <p id="text1"> Text Here </p> <input type="button" id="mod" name="modify" value="modify" />个对象需要创建对象,该对象将添加到具有不同元素的另一个列表中:List<MyObject>

这就是我的工作方式,

List<OtherObject>

我正在寻找一个List<MyObject> myList = returnsList(); List<OtherObj> emptyList = new ArrayList(); for(MyObject obj: myList) { OtherObj oo = new OtherObj(); oo.setUserName(obj.getName()); oo.setUserAge(obj.getMaxAge()); emptyList.add(oo); } 表达式来完成同样的事情。

3 个答案:

答案 0 :(得分:6)

如果定义构造函数OtherObj(String name, Integer maxAge),则可以使用java8样式:

myList.stream()
    .map(obj -> new OtherObj(obj.getName(), obj.getMaxAge()))
    .collect(Collectors.toList());

这会将列表myList中的所有对象映射到OtherObj,并将其收集到包含这些对象的新List

答案 1 :(得分:1)

您可以在OtherObject中使用MyObject属性

创建构造函数
public OtherObject(MyObject myObj) {
   this.username = myObj.getName();
   this.userAge = myObj.getAge();
}

您可以执行以下操作,从OtherObject s

创建MyObject
myObjs.stream().map(OtherObject::new).collect(Collectors.toList());

答案 2 :(得分:0)

我看到这是相当古老的帖子。但是,这是基于之前的答案我对此的看法。我的答案中唯一的修改是使用.collect(ArrayList::new, ArrayList::add,ArrayList:addAll)

示例代码:

List<OtherObj> emptyList = myList.stream()
.map(obj -> {   
OtherObj oo = new OtherObj();
oo.setUserName(obj.getName());
oo.setUserAge(obj.getMaxAge());   
return oo; })
.collect(ArrayList::new, ArrayList::add,ArrayList::addAll);