for與foreach的差別

關於for循環和foreach循環,使用java的童鞋已經熟悉得不能在熟悉了,那麼關於他們的區別,咱們知道多少呢?java

for循環是基礎語法,全部不在贅述數組

foreach循環也叫加強型的for循環,是JDK5.0的新特性,foreach循環的加入簡化了集合的遍歷,缺點是丟掉了索引信息bash

foreach循環語法性能

for(type element: array){
}
複製代碼

for循環與foreach循環性能比較ui

ArrayList<Integer> arrayList = new ArrayList<>();
LinkedList<Integer> linkedList = new LinkedList<>();


for (int i = 0; i < 100000; i++) {
    arrayList.add(i);
    linkedList.add(i);
}

int number;
long start = System.currentTimeMillis();
for (int i = 0; i < arrayList.size(); i++) {
    number = arrayList.get(i);
}
long end = System.currentTimeMillis();
long result = end - start;
System.out.println("ArrayList for循環消耗時間:" + result);


start = System.currentTimeMillis();
for (int i : arrayList) {
    number = i;
}
end = System.currentTimeMillis();
result = end - start;
System.out.println("ArrayList foreach循環消耗時間:" + result);


start = System.currentTimeMillis();
for (int i = 0; i < linkedList.size(); i++) {
    number = linkedList.get(i);
}
end = System.currentTimeMillis();
result = end - start;
System.out.println("LinkList for循環消耗時間:" + result);

start = System.currentTimeMillis();
for (int i : linkedList) {
    number = i;
}
end = System.currentTimeMillis();
result = end - start;
System.out.println("LinkList foreach循環消耗時間:" + result);
複製代碼

運行結果spa

ArrayList for循環消耗時間:8
ArrayList foreach循環消耗時間:12
LinkList for循環消耗時間:7779
LinkList foreach循環消耗時間:3
複製代碼

能夠看出,ArrayList中for循環比foreach循環稍快一點,而在LinkList中,foreach循環比for循環快不少code

循環次數增長,ArrayList中for循環仍然比foreach循環快,而LinkList中for循環可能會被程序卡死索引

總結:element

  1. foreach是加強行for循環,JDK1.5的新特性
  2. foreach對掉了索引信息
  3. ArrayList中for循環比foreach循環快
  4. LinkList中foreach循環比for循環快
  5. 循環數組結構的數據時,建議使用普通for循環,由於for循環採用下標訪問
  6. 循環鏈表結構的數據時,必定不要使用普通for循環,數據量大的時可能致使系統奔潰
相關文章
相關標籤/搜索