Javaのforとforeachの違いは何ですか?

青灯夜游
リリース: 2020-10-19 11:22:46
オリジナル
5586 人が閲覧しました

違い: 1. ループ数が不明な場合、またはループ数の計算が面倒な場合は foreach の方が効率的ですが、より複雑なループでは foreach の方が効率的です; 2. foreach はループではサポートされていません操作を追加および削除する場合、配列またはコレクションは変更できませんが、for ループは変更できます。

Javaのforとforeachの違いは何ですか?

関連する推奨事項: 「Java ビデオ チュートリアル

まず、foreach について説明します。 for ループ、foreach は実際には for ループの特別に簡略化されたバージョンです。

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

for(元素类型  元素名称 : 遍历数组(集合)(或者能进行迭代的)){
语句
 }
ログイン後にコピー

foreach は for ループの簡略化されたバージョンですが、それが意味するものではありません。 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方法 
  }
 }
ログイン後にコピー

を入力するには、この通常のコレクションに加えて、map

などのキーと値のペアを使用することもできます。例:

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 は追加をサポートしていません。 foreach を使用するときループ内で操作を削除する場合、配列 (コレクション) はロックされており変更できません。それ以外の場合は、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 はコレクションまたは配列を単に走査するのに適していますが、より複雑な場合には for の方が効率的です。ループします。

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

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

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート