1. 程式人生 > >foreach 和 for 的區別

foreach 和 for 的區別

foreach的書寫格式:

    for(元素型別  變數名稱 : 遍歷陣列(集合)(或者能進行迭代的)){

    語句

   }

foreach適用於迴圈次數未知,或者計算迴圈次數比較麻煩情況下使用效率更高,但是更為複雜的一些迴圈還是需要用到for迴圈效率更高。

  主要是增強了for迴圈,在遍歷陣列,集合上會更加方便

  可以遍歷的內容:陣列,Collection ----直接遍歷  Map -------間接遍歷

  foreach是for迴圈的簡化版本,但是不能完全替代for迴圈,

public static void main(String[] args) {

List
<String> arr = new ArrayList<String>(); //新增資料到List陣列 arr.add("你好"); arr.add("我好"); arr.add("他也好"); arr.add("哈嘍");

/*
* 原理:當執行增強for迴圈時,會從陣列中自動按照順序取值,取出的值會放入前面的變數中,
* 本次迴圈使用的就是當前的變數結束後,自動開始第二次變數,會自動從陣列中取出第二個元素,
* 再次放入前面的變數中依次進行下去,直到將陣列中的元素取完,自動停止.


*/

//foreach迴圈
  for(String str:arr){   //這裡的str就是獲取每次迴圈的arr中的值
      System.out.println(str)  ;  //就相當於  String  str  = arr[i];
     }    
}

Map集合中使用foreach來遍歷

 

package start;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Demo1 {
    public static void
main(String[] args){ Map<String,String> map = new HashMap<String, String>(); map.put("你好啊","傑瑞"); map.put("你好哦","湯姆"); map.put("你好呀","湯姆哥"); map.put("你好嗨","傑瑞弟"); //使用entry.set方法 //使用foreach迴圈遍歷集合 for(Map.Entry<String,String> entry: map.entrySet()){ //這裡的Map.Entry<String, String>就是一個數據型別 用來表示鍵值對的型別 System.out.print("key:" + entry.getKey()); System.out.println(" value:" + entry.getValue()); } //亦可以使用keySet方法 //得到set Set <String> set = map.keySet(); //使用增強for遍歷 for (String key : set) { System.out.println("key:"+key+" value"+map.get(key)); } } }

  foreach簡化了流程,提高了程式碼的可讀性和安全性。在遇到陣列或者集合索引的情況下,foreach就不好用了。而且foreach一般都是結合泛型使用。

  foreach只是來迴圈遍歷集合或者陣列的時候會方便點,for則在複雜的迴圈中使用效率更高.