将foreach转换为filter

huangapple go评论101阅读模式
英文:

converting foreach to filter

问题

我想将代码从这样:

  1. List<FlightPositionRoute> flightPositionRoutes = new ArrayList<>();
  2. dtos.stream()
  3. .map(a -> positions.getPositions(a.getId().getValue()))
  4. .forEach(flightPositionRoute -> flightPositionRoute.ifPresent(flightPositionRoutes::add));

转换为这样:

  1. List<FlightPositionRoute> flightPositionRoutes = dtos.stream()
  2. .map(a -> positions.getPositions(a.getId().getValue()))
  3. .filter(Optional::isPresent)
  4. .map(Optional::get)
  5. .collect(Collectors.toList());

我的意思是,我想使用 filter 代替 foreach,因为它更优雅 将foreach转换为filter

不过,很遗憾,我遇到了这个问题:

  1. Required type: List<FlightPositionRoute>
  2. Provided: List<Optional<FlightPositionRoute>>
  3. 如何修复这个问题?
英文:

I would like to convert

  1. List&lt;FlightPositionRoute&gt; flightPositionRoutes = new ArrayList&lt;&gt;();
  2. dtos.stream()
  3. .map(a-&gt; positions.getPositions(a.getId()
  4. .getValue()))
  5. .forEach(flightPositionRoute -&gt;
  6. flightPositionRoute.ifPresent(flightPositionRoutes::add));

To this:

  1. List&lt;FlightPositionRoute&gt; flightPositionRoutes = dtos.stream()
  2. .map(a-&gt; positions.getPositions(a.getId()
  3. .getValue()))
  4. .filter(Optional::isPresent)
  5. .collect(Collectors.toList());

I mean I would like to use filter instead of foreach, because it's prettier 将foreach转换为filter

Unfortunately, I'm getting

  1. Required type: List &lt;FlightPositionRoute&gt;
  2. Provided: List &lt;Optional&lt;FlightPositionRoute&gt;&gt;

How can I repair it?

答案1

得分: 2

你只需要解开 Optional

  1. List<FlightPositionRoute> flightPositionRoutes = dtos.stream()
  2. .map(a -> positions.getPositions(a.getId().getValue()))
  3. .filter(Optional::isPresent)
  4. .map(Optional::get)
  5. .collect(Collectors.toList());
英文:

You just need to unpack the Optional:

  1. List&lt;FlightPositionRoute&gt; flightPositionRoutes = dtos.stream()
  2. .map(a-&gt; positions.getPositions(a.getId().getValue()))
  3. .filter(Optional::isPresent)
  4. .map(Optional::get)
  5. .collect(Collectors.toList());

huangapple
  • 本文由 发表于 2020年10月8日 02:13:45
  • 转载请务必保留本文链接:https://go.coder-hub.com/64249992.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定