lambda表达式:将函数结果用作Map中的下一个参数

insrf1ej  于 2021-08-25  发布在  Java
关注(0)|答案(2)|浏览(571)

我的Map器中有一个带有几个参数的函数:函数(a,b,c)它们都来自不同的函数,都在同一个服务中,但是参数b和c需要参数a的结果

  1. service.getRequests()
  2. .stream()
  3. .map(r ->
  4. mapper.function(
  5. service.getAList(r), //return List<A> aList
  6. service.getBList(aList), //use the previous aList as parameter
  7. service.getCList(aList) //same
  8. )
  9. .sorted()
  10. .collect(Collectors.toList());

有办法做到这一点吗?

xzv2uavs

xzv2uavs1#

照办

  1. .map(r -> {
  2. List<A> aList = service.getAList(r);
  3. return mapper.function(
  4. aList,
  5. service.getBList(aList),
  6. service.getCList(aList);
  7. })
pgpifvop

pgpifvop2#

最好将此功能移动到单独的方法中:

  1. private MapperResult remap(Request request) {
  2. List<A> resultA = service.getAList(request);
  3. return mapper.function(
  4. resultA,
  5. service.getBList(resultA),
  6. service.getCList(resultA)
  7. );
  8. }

然后引用此方法:

  1. service.getRequests()
  2. .stream()
  3. .map(MyClass::remap)
  4. .sorted()
  5. .collect(Collectors.toList());
展开查看全部

相关问题