【发布时间】:2019-06-20 05:15:27
【问题描述】:
我有一个 A 类型的当前 ArrayList,我想创建一个包含此列表中所有 B 类型对象的新列表,其中 B 是 A 的子类。有没有办法使用地图()?
ArrayList<B> allBs = allAs.stream().map( b -> where b instanceof B)
可能看起来像这样?
【问题讨论】:
标签: java dictionary arraylist types instanceof
我有一个 A 类型的当前 ArrayList,我想创建一个包含此列表中所有 B 类型对象的新列表,其中 B 是 A 的子类。有没有办法使用地图()?
ArrayList<B> allBs = allAs.stream().map( b -> where b instanceof B)
可能看起来像这样?
【问题讨论】:
标签: java dictionary arraylist types instanceof
您可以使用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是个好习惯
【讨论】: