java-stream-一行中列出的long列表

时间:2018-01-30 19:27:12

标签: java java-8 java-stream long-integer

所以我知道我可以使用两条.stream行来完成此操作,但不确定我是否只能在一行中执行此操作。 这就是我所拥有的:

List<Long> abcIds= abcController.findByUserIds(userIds)
      .stream()
      .map(Abc::getAbcId)
      .collect(Collectors.toList());

但我希望abcIds成为一个整数列表,因为稍后我将使用它的其他函数。我知道我可以写这样的另一行来将List of Long转换为整数列表:

List<Integer> abcIntIds= abcIds.stream()
           .map(Long::intValue)
           .collec‌t(Collectors.toList(‌​));

但有没有办法把它写得更优雅?

1 个答案:

答案 0 :(得分:6)

为什么不map两次?

abcController.findByUserIds(userIds)
    .stream()
    .map(Abc::getAbcId)
    .map(Long::intValue)
    .collec‌t(Collectors.toList(‌​));