Heim > Java > javaLernprogramm > Vergleichen Sie den Unterschied zwischen foreach und for

Vergleichen Sie den Unterschied zwischen foreach und for

巴扎黑
Freigeben: 2017-09-05 14:06:20
Original
2916 Leute haben es durchsucht

Der folgende Editor vermittelt Ihnen ein Klischee über den Unterschied zwischen foreach (erweiterte for-Schleife) und for. Der Herausgeber findet es ziemlich gut, deshalb werde ich es jetzt mit Ihnen teilen und es allen als Referenz geben. Folgen wir dem Editor, um einen Blick darauf zu werfen

Lassen Sie uns zunächst über foreach sprechen, das auch als erweiterte for-Schleife bezeichnet wird. Foreach ist eigentlich eine spezielle vereinfachte Version der for-Schleife.

Lassen Sie uns über das Schreibformat von foreach sprechen:

for (Elementtyp Elementname: Traverse Array (Set) (oder Iterable) ) {

Anweisung

}

Obwohl foreach eine vereinfachte Version der for-Schleife ist, bedeutet dies nicht, dass foreach nützlicher ist als foreach für unbekannte Schleifen Oder es kann effizienter sein, die Anzahl der Schleifen zu berechnen, aber einige komplexere Schleifen müssen immer noch für Schleifen verwendet werden, um effizienter zu sein.

Schauen wir uns das folgende Beispiel an:


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]
  }
 }
Nach dem Login kopieren

Aber im Vergleich verwenden wir The for Die Schleifeneingabe ist etwas mühsam


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方法 
  }
 }
Nach dem Login kopieren

Zusätzlich zu dieser gewöhnlichen Sammlung können Sie auch Schlüssel-Wert-Paare wie Map verwenden

Zum Beispiel:


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方法获取出来存储的键值对。
  }
 }
Nach dem Login kopieren

Darüber hinaus unterstützt foreach das Hinzufügen und Löschen von Vorgängen in der Schleife nicht, da bei Verwendung der foreach-Schleife das Array (die Sammlung) bereits gesperrt ist und dies nicht möglich ist geändert werden, andernfalls wird java.util.ConcurrentModificationExceptionException

Meldet:


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进行添加 
  }
 }
Nach dem Login kopieren

Über das Prinzip von Das Hinzufügen und Löschen ist nicht möglich und wie geht das in foreach? Das Hinzufügen und Löschen wird im nächsten Artikel besprochen.

Die Zusammenfassung lautet also wie folgt:

foreach eignet sich nur zum Durchlaufen einer Sammlung oder eines Arrays, während for in komplexeren Fällen effizienter ist Schleifen.

Foreach kann das Array oder die Sammlung nicht ändern (Hinzufügen oder Löschen). Wenn Sie es ändern möchten, müssen Sie eine for-Schleife verwenden.

Daher ist die for-Schleife im Vergleich flexibler.

Das obige ist der detaillierte Inhalt vonVergleichen Sie den Unterschied zwischen foreach und for. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage