在流操作期间转换列表

pit*_*las 6 java java-8 java-stream

这是我的情景:

private List<Entity> getPlanets() {
   return entities.values()
                  .stream()
                  .filter(x -> x instanceof Planet)
                  .collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)
  • Entity 是超级的 Planet
  • 实体是一个 HashMap<Entity>
  • 由于该方法被称为"getPlanets",我希望它返回一个,List<Planet>但在我看来,流表达式将返回一个List<Entity>
  • 我尝试了一些演员表达,但似乎都没有.

我是全新的Java 8流,所以也许有人可以指出我缺少的东西?

Lou*_*man 8

return entities.values()
               .stream()
               .filter(x -> x instanceof Planet)
               .map(x -> (Planet) x)
               .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)