質問はかなり漠然としているかもしれません。しかし、私がこれを尋ねる理由は、クラスが何らかの考えを念頭に置いて作成されたに違いないからです.
この質問は、SO でいくつかの質問を閲覧しているときに頭に浮かびました。
次のコードを検討してください。
class A
{
private int myVar;
A(int varAsArg)
{
myVar = varAsArg;
}
public static void main(String args[])
{
List<A> myList = new LinkedList<A>();
myList.add(new A(1));
myList.add(new A(2));
myList.add(new A(3));
//I can iterate manually like this:
for(A obj : myList)
System.out.println(obj.myVar);
//Or I can use an Iterator as well:
for(Iterator<A> i = myList.iterator(); i.hasNext();)
{
A obj = i.next();
System.out.println(obj.myVar);
}
}
}
上記のコードからわかるように、for
ループを使用して反復する代わりに、Iterator
クラスhasNext()
とnext()
メソッドを使用して同じことを行うことができます。remove()
同様に、メソッドの例があります。また、経験豊富なユーザーは、ループをIterator
使用して. なんで?for
List
さらに混乱しているのは、Iterator
クラスに3 つのメソッドしかないことです。また、これらの機能は、少し異なるコードを記述することでも実現できます。
class
一部の人々は、多くのクラスの機能は、目的のために作成されたものを使用する代わりに、独自のコードを作成することによって実現できると主張するかもしれません。そうですね。しかし、私が言ったように、Iterator
クラスには 3 つのメソッドしかありません。複雑すぎて理解できない単純なコード ブロックで同じジョブを実行できるのに、余分なクラスを作成する手間がかかるのはなぜでしょうか。
編集:
私が取り組んでいる間、答えの多くは、を使用しないと削除機能を実現できないと言っているのでIterator
、次のことが間違っているかどうか、または望ましくない結果になるかどうかを知りたいだけです。
for(A obj : myList)
{
if(obj.myVar == 1)
myList.remove(obj);
}
上記のコード スニペットは と同じことをしremove()
ませんか?