在Java中将一个列表映射到另一个列表的最优雅方法是什么?

Mik*_*liy 3 java

我是Java新手所以请耐心等待.

将列表映射(转换)到列表是很常见的.有些语言有map一些方法,有些(C#)Select.这是如何用Java完成的?是一个for循环的唯一选择?

我希望能够做到这样的事情:

List<Customer> customers = new ArrayList<Customer>();
...
List<CustomerDto> dtos = customers.convert(new Converter(){
  public convert(c) {
    return new CustomerDto();
  }
})
Run Code Online (Sandbox Code Playgroud)

我错过了什么?请给我一个起点.

Ste*_*eod 5

在Java中没有内置的方法 - 您必须编写或使用帮助程序类.Google Collections包括

public static <F,T> List<T> transform(List<F> fromList,
                                  Function<? super F,? extends T> function)
Run Code Online (Sandbox Code Playgroud)

这很好用,但使用起来有点笨拙,因为你必须使用单方法匿名类和静态方法.这不是Google Collections的错,它只是在Java中执行此类任务的本质.

请注意,这会根据需要延迟转换源列表中的项目.