我有一个当前类型为A的ArrayList,我想为该列表中所有对象的类型为B的对象创建一个新列表,其中B是A的子类。有没有一种方法可以使用map()?
ArrayList<B> allBs = allAs.stream().map( b -> where b instanceof B)
那可能看起来像这样吗?
答案 0 :(得分:3)
您可以使用filter
函数来做到这一点:
List<B> allBs = allAs.stream()
.filter(B.class::isInstance)
.map(B.class::cast)
.collect(Collectors.toList());
这将过滤出与给定谓词不匹配的所有元素,将其转换为B
对象,然后将其收集到新的List
。
还要注意,我将ArrayList<B> allBs
更改为List<B> allBs
,因为这是对program to the interface的一种很好的做法