我有一个当前类型为 A 的 ArrayList,我想创建一个包含此列表中所有类型为 B 的对象的新列表,其中 B 是 A 的子类。有没有一种方法可以使用 map ()?
ArrayList<B> allBs = allAs.stream().map( b -> where b instanceof B)
那可能看起来像这样?
最佳答案
您可以使用 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
关于java - 使用来自另一个 ArrayList 的映射实例化 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54381043/