给定父母列表

时间:2015-09-17 14:30:05

标签: java list filter collectors

所以,想象一下,我有一个父类Feature类。然后是该类的一群孩子,如Dotted,Stripped,Blank,都继承自Feature。

给定List<Feature>我想得到该列表中Dotted类的所有对象。

仅供参考,我首先使用List<Feature> featuresfeatures.add(New Dotted())features.add(New Blank())等填充features.add(New Blank()) ...

我尝试过类似的东西:

public List<Dotted> getAllDotted(List<Feature> features){
    List<Dotted> result = features.stream().filter(o -> o.getClass().equals(Dotted.class)).collect(Collectors.toList());
    return result;
}

但它不起作用,因为Collector.ToList()不会将filter()的结果转换为List<Dotted>

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

List<Dotted> d = f.stream().filter(o -> o instanceof Dotted).map(o -> (Dotted) o).collect(Collectors.toList());

可能不是很干净。