-1
private SomeObject[] all_objs;     

public Iterator<SomeObject> iterator() {
   //
}

の配列からイテレータを取得する最良の方法は何SomeObjectですか?

編集 ArrayLists や HashSets などのラッパーを使用せずにイテレータを生成する方法はありませんか?

4

3 に答える 3

5

を実装する独自のクラスを作成できますIterator<SomeObject>。インターフェイスのメソッドを実装するだけです。イテレータのユーザーが配列から項目を削除できないようにする場合 (ArrayList ではないため)、このメソッドが呼び出された場合に UnsupportedOperationException をスローします。

もちろん、 an を使用するArrayList<SomeObject>と、iterator()メソッドは ArrayList からイテレータを返すだけで済み、作業がずっと楽になります。

于 2013-02-23T04:02:18.270 に答える
3

Listイテレータの使用:

import java.util.List;
import java.util.Arrays;

public <T> Iterator<T> iterator() {
    List<T> list = (List<T>) Arrays.asList(all_objs);

    return list.iterator();
}
于 2013-02-23T04:07:29.613 に答える
1

java.util.ArrayListのコードも確認できます。これを実装する方法は次のとおりです。

 T=SomeObject //Your Class

 public YourIterable<T> implements Iterable<T>{
     //**Iterable**  Implementing this interface allows an object 
     //to be the target of the "foreach" statement.
     public Iterator<T> iterator() {

          return new Itr();
      }  

   private class Itr implement Iterator<T> {
      //Complex Implementation - You have to maintain a Cursor to keep track of 
      // which record was accessed
            boolean hasNext() {
                 //Returns true if the iteration has more elements.
            }

            T next() { 
             //Returns the next element in the iteration.
            }  

            void remove() {//Remove 
          }

    }

 }
于 2013-02-23T04:51:03.610 に答える