如何将List <xobject>转换为List <xobjectwrapper>?</xobjectwrapper> </xobject>

时间:2014-09-16 11:27:32

标签: java java-8

public class XObject {
...
}

public class XObjectWrapper
{
  private final XObject xo;

  public XObjectWrapper(XObject xo) {
    this.xo = xo;
  }
//delegated methods
...
}

我有List<XObject>,我想获得List<XObjectWrapper>

显然,我可以这样做:

List<XObjectWrapper> wrappedList = new ArrayList<XObjectWrapper> ();
for(XObject xo : xoList) 
{
  wrappedList.add(new XObjectWrapper(xo));
}

我可以使用一些新的java8功能,并使用一行吗?

1 个答案:

答案 0 :(得分:4)

这样做:

List<XObjectWrapper> wrappedList = 
   xoList.stream().map(XObjectWrapper::new).collect(toList());

(假设import static java.util.stream.Collectors.toList;

更新

为了完整性,并且由于代码中可能存在错误,这里有一个独立的示例:

import static java.util.stream.Collectors.toList;
import java.util.ArrayList;
import java.util.List;

static class XObjectWrapper {XObjectWrapper(Object o) {}}
static class XObject {}

public class Test {
  public static void main(String[] args) {
    List<Object> xoList = new ArrayList<>();
    List<XObjectWrapper> wrappedList =
        xoList.stream().map(XObjectWrapper::new).collect(toList());
    System.out.println(wrappedList);
  }
}