Java 如何在arraylist中迭代一种类型的对象?
我有一些继承树,它的所有子类都保存在一个数组列表中。因此,如果类Java 如何在arraylist中迭代一种类型的对象?,java,Java,我有一些继承树,它的所有子类都保存在一个数组列表中。因此,如果类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()); for(a obj : arr) { ... } private List arr=new ArrayList(); a
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());
for(a obj : arr) {
...
}
private List arr=new ArrayList();
arr.add(新的a());
arr.add(新的a());
arr.add(新的b());
arr.add(新的c());
我只想遍历这个数组列表中的a类对象。我可以这样做:
for(int i = 0; i < arr.size(); i++) {
if(arr[i] instanceof a) {
// ...
}
}
for(int i=0;i
这应该行得通,但我得在几个地方写这段代码……而且for循环中还有几个if,所以代码会失去很多可读性
我在想,有没有一种更简单的方法?也许只是使用for循环?不,你说得对。这:
for(int i = 0; i < arr.size(); i++) {
if(arr[i] instanceof a) {
// ...
}
}
for(int i=0;i
是这样做的最佳方式。您可以编写自己的列表,从ArrayList扩展并覆盖从
Iterable
继承的方法,并且仅当下一个元素是a
的实例时才显示它。
然后您的循环将如下所示:
private List<Foo> arr = new ArrayList<Foo>();
arr.add(new a());
arr.add(new a());
arr.add(new b());
arr.add(new c());
for(a obj : arr) {
...
}
不知道更多的是,这是如何做到的。但是,如果你给出一个具体的例子,我们可能会知道多态性是否更合适。