繁体   English   中英

如何遍历arraylist中的一种类型的对象?

[英]How to iterate through one type of objects in arraylist?

我有一些继承树,它的所有子类都保存在一个数组列表中。 所以如果类a, b, c继承自Foo类,我有这样的东西:

private List<Foo> arr = new ArrayList<Foo>();

arr.add(new a());
arr.add(new a());
arr.add(new b());
arr.add(new c());

我只想遍历此数组列表中的 a 类对象。 我可以这样做:

for(int i = 0; i < arr.size(); i++) {
   if(arr[i] instanceof a) {
      // ...
   }
}

嗯,这应该可行,但我必须在几个地方编写这段代码……而且在 for 循环中还会有其他几个 if,因此代码会失去很多可读性。

我想知道,有没有更短的方法来做到这一点? 也许只是使用 for 循环?

不,你是对的。 这个:

for(int i = 0; i < arr.size(); i++) {
    if(arr[i] instanceof a) {
        // ...
    }
}

是最好的方法。

你可以写一个自己的名单,从ArrayList中延伸并覆盖从继承的方法Iterable ,并且只显示下一个元素,如果它的实例a 然后你的循环看起来像这样:

for(a obj : arr) {
    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM