1. ホーム
  2. java

[解決済み] Javaの「for each」ループはどのように機能するのですか?

2022-03-19 03:25:49

質問

考えてみてください。

List<String> someList = new ArrayList<String>();
// add "monkey", "donkey", "skeleton key" to someList

for (String item : someList) {
    System.out.println(item);
}

に相当するものは何でしょうか? for を使用しない場合、ループはどのようになりますか? それぞれ の構文がありますか?

どのように解決するのですか?

for (Iterator<String> i = someIterable.iterator(); i.hasNext();) {
    String item = i.next();
    System.out.println(item);
}

を使用する必要がある場合に注意してください。 i.remove(); を使用したり、何らかの方法で実際のイテレータにアクセスしたりすることはできません。 for ( : ) イディオムは、実際のイテレータが単に推測されるだけだからです。

Denis Bueno が指摘したように、このコードは Iterable インターフェース .

また、右辺の for (:) イディオムは array ではなく Iterable オブジェクトを使用する場合、内部コードでは int 型のインデックスカウンタを使用し array.length の代わりに を参照してください。 Java言語仕様 .