簡體   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