ホームページ  >  記事  >  Java  >  foreach と for の違いを比較する

foreach と for の違いを比較する

巴扎黑
巴扎黑オリジナル
2017-09-05 14:06:202903ブラウズ

以下のエディターは、foreach (拡張 for ループ) と for の違いについての決まり文句を示します。編集者はこれがとても良いものだと思ったので、皆さんの参考として今から共有します。エディターをフォローして見てみましょう

まず最初に、拡張 for ループとも呼ばれる foreach について説明します。Foreach は、実際には for ループの特別な簡易バージョンです。

foreach の記述形式について話しましょう:

for (要素型要素名: traverse array (set) (or iterable)) {

statement

}

foreach は for ループですが、簡略化しましたただし、ループの数が不明な場合、またはループの数を計算するのが面倒な場合は、foreach の方が効率的であるという意味ではありません。ただし、一部のより複雑なループでは、依然として for ループを使用する必要があります。 、より効率的です。

次の例を見てみましょう:


public static void main(String[] args) {
  List<String> arr = new ArrayList<String>();
  arr.add("你好");
  arr.add("我好");
  arr.add("大家好");
  
  //foreach循环
  for(String str : arr){       //这里的str就是为了获取每次循环的arr中的值
   System.out.println(str);       //就相当于 String str=arr[i]
  }
 }

しかし、それに比べて、入力にforループを使用するのは少し面倒です


public static void main(String[] args) {
  List<String> arr = new ArrayList<String>();
  arr.add("你好");
  arr.add("我好");
  arr.add("大家好");
  
  //for循环
  for(int i=0;i<arr.size();i++){
   System.out.println(arr.get(i)); //要获取list中元素需要用get方法 
  }
 }

この普通のことに加えてこの種のキーと値のペアは

を使用します。例:


public static void main(String[] args) {
  Map<String,String> mapstr = new HashMap<String,String>();
  mapstr.put("王", "男");
  mapstr.put("李", "男");
  mapstr.put("张", "女");
                      //entrySet方法是为了获取键值对的集合
  for(Map.Entry<String, String> s : mapstr.entrySet()){ //这里的Map.Entry<String, String>其实就是一个类型 用来表示键值对的类型
   System.out.println("key="+s.getKey());   //这里其实还是相当于 s=maostr.entrySet,只不过s存储的是键值对。
   System.out.println("value="+s.getValue());  //所以可以用get方法获取出来存储的键值对。
  }
 }

さらに、foreach ループを使用する場合、配列 ( collection) はすでにロックされており、変更できません。そうでない場合は、java.util.ConcurrentModificationExceptionException

が報告されます。例:


public static void main(String[] args) {
  List<String> arr = new ArrayList<String>();
  arr.add("你好");
  arr.add("我好");
  arr.add("大家好");
  
  //foreach循环
  for(String str : arr){     
   System.out.println(str);   
   arr.add("1");     //对arr进行添加 
  }
 }

追加と削除ができない原理とその方法について説明します。 foreach での追加と削除については次の記事で説明します。

要約は次のとおりです:

foreach はコレクションまたは配列を単に走査するのに適していますが、より複雑なループでは for の方が効率的です。

foreach は配列またはコレクションを変更 (追加または削除操作) することはできません。変更したい場合は、for ループを使用する必要があります。

つまり、for ループはそれに比べてより柔軟です。

以上がforeach と for の違いを比較するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。