这是我的情景:
private List<Entity> getPlanets() {
return entities.values()
.stream()
.filter(x -> x instanceof Planet)
.collect(Collectors.toList());
}
Entity
是Planet
HashMap<Entity>
List<Planet>
,但在我看来,流表达式将返回List<Entity>
我是Java 8流的新手,所以也许有人可以指出我缺少的东西?
答案 0 :(得分:8)
return entities.values()
.stream()
.filter(x -> x instanceof Planet)
.map(x -> (Planet) x)
.collect(Collectors.toList());
答案 1 :(得分:3)
方法参考的变体:
return entities.values().stream()
.filter(Planet.class::isInstance)
.map(Planet.class::cast)
.collect(Collectors.toList());