private SomeObject[] all_objs;
public Iterator<SomeObject> iterator() {
//
}
の配列からイテレータを取得する最良の方法は何SomeObject
ですか?
編集 ArrayLists や HashSets などのラッパーを使用せずにイテレータを生成する方法はありませんか?
を実装する独自のクラスを作成できますIterator<SomeObject>
。インターフェイスのメソッドを実装するだけです。イテレータのユーザーが配列から項目を削除できないようにする場合 (ArrayList ではないため)、このメソッドが呼び出された場合に UnsupportedOperationException をスローします。
もちろん、 an を使用するArrayList<SomeObject>
と、iterator()
メソッドは ArrayList からイテレータを返すだけで済み、作業がずっと楽になります。
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();
}
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
}
}
}