foreach 和 for 的區別
阿新 • • 發佈:2018-11-06
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 voidmain(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則在複雜的迴圈中使用效率更高.