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

标签 java dictionary arraylist types instanceof

我有一个当前类型为 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> allBsList<B> allBs , 因为这是很好的做法 program to the interface

关于java - 使用来自另一个 ArrayList 的映射实例化 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54381043/

相关文章:

Java - DriverManager.getConnection 访问

python - 'dict' 对象没有属性 'HTTP_REFERER'

java - 如何比较java中最大数组列表中的两个日历?

java - JOGL 物理(Java、OpenGL)

java - 圆圈边缘的箭头

GCC/codeblocks 的 C++ STL 映射编译器问题

python - 如何获取字典键和值

java - 如何将一个类的arraylist对象传递给以对象作为java中参数的通用方法

Java按具有优先级的3个字段对对象的ArrayList进行排序,得到意想不到的结果

java - GWT handle 返回、刷新、关闭按钮