Maison > Java > javaDidacticiel > Quelle est la différence entre for et foreach en Java ?

Quelle est la différence entre for et foreach en Java ?

青灯夜游
Libérer: 2020-10-19 11:22:46
original
5625 Les gens l'ont consulté

Différence : 1. foreach est plus efficace lorsque le nombre de boucles est inconnu ou qu'il est difficile de calculer le nombre de boucles, tandis que for est plus efficace dans les boucles plus complexes 2. foreach n'est pas pris en charge dans les boucles ; Lors de l'ajout et de la suppression d'opérations, le tableau ou la collection ne peut pas être modifié, mais la boucle for le peut.

Quelle est la différence entre for et foreach en Java ?

Recommandations associées : "Tutoriel vidéo Java"

Tout d'abord, parlons de foreach, qui est également appelée amélioration de la boucle for, foreach est en fait une version simplifiée spéciale de la boucle for.

Parlons du format d'écriture de foreach :

for(元素类型  元素名称 : 遍历数组(集合)(或者能进行迭代的)){
语句
 }
Copier après la connexion

Bien que foreach soit une version simplifiée de la boucle for, cela ne veut pas dire que foreach est plus puissant que for. Il est facile à utiliser. Foreach est plus efficace lorsque le nombre de boucles est inconnu ou qu'il est difficile de calculer le nombre de boucles. Cependant, certaines boucles plus complexes doivent encore être utilisées pour une plus grande efficacité. .

Regardons l'exemple suivant :

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]
  }
 }
Copier après la connexion

Mais en comparaison, c'est un peu gênant pour nous d'utiliser une boucle for pour saisir

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方法 
  }
 }
Copier après la connexion

En plus de cette collection ordinaire, vous pouvez également utiliser des paires clé-valeur comme map

Par exemple :

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方法获取出来存储的键值对。
  }
 }
Copier après la connexion

De plus, foreach ne prend pas en charge l'ajout et supprimer des opérations dans une boucle, car lors de l'utilisation de foreach Lors de la boucle, le tableau (collection) a été verrouillé et ne peut pas être modifié, sinon une java.util.ConcurrentModificationException exception

sera signalée . Par exemple :

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进行添加 
  }
 }
Copier après la connexion

Le résumé est donc le suivant :

foreach convient simplement pour parcourir une collection ou un tableau, tandis que for l'est. plus efficace dans des boucles plus complexes.

Foreach ne peut pas modifier le tableau ou la collection (opérations d'ajout ou de suppression). Si vous souhaitez le modifier, vous devez utiliser une boucle for.

La boucle for est donc plus flexible en comparaison.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal