java - 如何将 List<XObject> 转换为 List<XObjectWrapper>?

标签 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 功能,并且只用一行吗?

最佳答案

这样做会:

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

关于java - 如何将 List<XObject> 转换为 List<XObjectWrapper>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25867548/

相关文章:

java - Apache Storm 尝试本地主机 Zookeeper 连接,而不是指定的 Zookeeper 服务器列表

Java 8 并行流缩减——线程数与加速比

spring-boot - Spring 数据 JPA Redis : Cannot write custom method based query

java - ORA-00942 : table or view does not exist but query runs on SQL developer

java - 在二维数组中查找数字的对角线?

java - 线程通过调用interrupt()被中断,但是Thread.isInterrupted()返回false

java - 使 JDialog 按钮响应 Enter 键

javascript - freemarker、java和javascript之间的引用问题

java - 如何在java中重新定义lambda匿名类

java - 启动 Tomcat 9.0 时收到异常