1. 概念的な理解
for ループ: これは反復をサポートする一般的な構造であり、最も効果的で柔軟なループ構造です
Iterator: コレクションの iterator() メソッドを通じて取得されるため、コレクションに依存して存在すると言えます。
Foreach: ソースを読み取ることによってコード Iterable インターフェイスも見つかりました。これには Iterator オブジェクトを生成する iterator() メソッドが含まれており、Iterator オブジェクトはシーケンス内を移動するために foreach によって使用されます。 Iterable インターフェイスを実装する任意のオブジェクトに使用できます。
2. 効率の例
ArrayList での効率の比較:
List<Integer> integers = Lists.newArrayList(); for(int i=0;i<100000;i++){ integers.add(i); } long start1 = System.currentTimeMillis(); for(int count =0 ;count<10;count++){ for(int i=0;i<integers.size();i++){ int j=integers.get(i); } } System.out.println(String.format("for循环100次时间:%s ms",System.currentTimeMillis()-start1)); long start2 = System.currentTimeMillis(); for(int count =0 ;count<10;count++) { for (Integer i : integers) { int j = i; } } System.out.println(String.format("foreach循环100次时间:%s ms",System.currentTimeMillis()-start2)); long start3 = System.currentTimeMillis(); for(int count =0 ;count<10;count++) { Iterator<Integer> iterator = integers.iterator(); while(iterator.hasNext()){ int j=iterator.next(); } } System.out.println(String.format("迭代器循环100次时间:%s ms",System.currentTimeMillis()-start3));
結果:
for循环100次时间:15 ms foreach循环100次时间:25 ms 迭代器循环100次时间:20 ms
以下の 3 つの効率ArrayList はほぼ同じです。ArrayList は配列を通じて実装されるため、for ループが最適です。インデックスを通じて配列を位置決めする時間計算量は O(1) で、1 回で位置を特定できるため、効率は次のようになります。すごく高い。
概要: for ループを使用すると、連続して保存されたレコードへのアクセスが容易になり、foreach とイテレータを使用すると、リンクされたストレージへのアクセスが容易になります。
以上がJava のイテレータと for ループの長所と短所の比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。