3

方法 1

ArrayList<String> list = new ArrayList<String>();

for (String s : list) {
    write.append(s);
    write.append('\n');
}

この方法でループをどのように実行ArrayListできますか? このメソッドは、静的な通常の配列にのみ適用できます

String[] list2 = new String[]{"1","2","3","4"};か?

をループしたい場合はArrayList<String> list、たとえば次のようにしてみませんか:

方法 2

for (int i = 0; i < list.size(); i++) {
    write.append(list.get(i));
    write.append("\n");
}

Method 1を使用する方法がわかりません。どんな説明でも大歓迎です。

4

5 に答える 5

3

ArrayListIterableオブジェクトを提供するように実装しIteratorます。これは、for ループによってユーザーになります。

実装するすべてのクラスIterableは、配列と同様に for ループで使用できます。

単純化された for ループは、配列とコレクションで同じように見えるように作成されていますが、内部では、配列にはインデックスを使用し、コレクションには反復子を使用しています。

于 2013-07-21T05:24:40.580 に答える
2

Iterable高速反復を可能にすると呼ばれるインターフェースがあります。何かが実装されている場合Iterable、高速反復が許可されます。Iterableインターフェイスには 1 つのメソッドがあり、要素を反復処理するために使用できる を返しますIterator

于 2013-07-21T05:24:14.140 に答える
1

これは for-each 構文です: http://docs.oracle.com/javase/1.5.0/docs/guide/language/foreach.html

コンパイラは、方法 1 のコードを次のように変換します。

for (Iterator<String> iterator = list.iterator(); iterator.hasNext(); ) {
  String s = iterator.next();
  write.append(s);
  write.append('\n');
}
于 2013-07-21T05:24:27.447 に答える