使用来自另一个ArrayList的映射实例化ArrayList

时间:2019-01-26 17:50:13

标签: java dictionary arraylist types instanceof

我有一个当前类型为A的ArrayList,我想为该列表中所有对象的类型为B的对象创建一个新列表,其中B是A的子类。有没有一种方法可以使用map()?

ArrayList<B> allBs = allAs.stream().map( b -> where b instanceof B)

那可能看起来像这样吗?

1 个答案:

答案 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的一种很好的做法