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] } }
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方法 } }
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方法获取出来存储的键值对。 } }
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进行添加 } }
Ü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!