将对象列表转换为Long列表

Ich*_*aki 6 java java-8 java-stream

我有一个课程如下:

Class1 {
    private Class2 class2;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我想转换列表Class1到列表Class2::getId(),这是我的尝试:

List<Class2> class2List = class1List.stream().map(Class1::getClass2).collect(Collectors.toList());
List<Long> class2Ids = class2List .stream().map(Class2::getId).collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

有没有办法在一条指令中执行此操作?

Eug*_*ene 9

你可以随意链接尽可能多的中间操作......

class1List.stream()
          .map(Class1::getClass2)
          .map(Class2::getId)
          .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

  • 或者使用单个`map(c1 - > c1.getClass2().getId())` (10认同)