public class test
public void test1()
// for迴圈
long starttime = system.currenttimemillis();
for (object s : list)
long endtime = system.currenttimemillis();
system.out.println("for迴圈用時:" + (endtime - starttime));
// lambda 表示式
long starttime1 = system.currenttimemillis();
list.parallelstream().foreach((s) -> );
long endtime1 = system.currenttimemillis();
system.out.println("lambda表示式用時:" + (endtime1 - starttime1));
}public void test2()
// for迴圈
long starttime = system.currenttimemillis();
for (object s : list) catch (interruptedexception e)
s.tostring();
}long endtime = system.currenttimemillis();
system.out.println("for迴圈耗時:" + (endtime - starttime));
// lambda表示式
long starttime1 = system.currenttimemillis();
list.parallelstream().foreach((s) -> catch (interruptedexception e)
s.tostring();
});long endtime1 = system.currenttimemillis();
system.out.println("lambda耗時:" + (endtime1 - starttime1));}}
多執行緒操作時的結果:
foreach比lamdba快,list.parallelstream()是併發處理的,大量的執行緒上下文切換導致效能下降。
單執行緒操作結果:
總結:對於耗時的操作用lambda表示式的for迴圈,如資料庫的io操作,多執行緒充分利用cpu資源;對於不太耗時的操作使用普通for迴圈,比如純cpu計算型別的操作,單執行緒效能更高,減少上下文切換的開銷。
for與foreach的區別
for i 0 iecho arr i for只能訪問鍵為數字的陣列 foreach arr as k v k 迴圈的鍵值 v 迴圈的值 foreach迴圈結構是按照陣列內部的指標去迴圈的,當 foreach 開始執行時,陣列內部的指標會自動指向第乙個單元,因此下一次迴圈中將會得到下乙個單元 for...
for迴圈與foreach的區別
首先說一下foreach有的也叫增強for迴圈,foreach其實是for迴圈的乙個特殊簡化版。再說一下foreach的書寫格式 for 元素型別 元素名稱 遍歷陣列 集合 或者能進行迭代的 用for迴圈的話就會麻煩很多 複製 public static void main string args ...
for迴圈與foreach的區別
for迴圈與foreach的區別 foreach 依賴 ienumerable.第一次 var a in getlist 時 呼叫 getenumerator 返回第乙個物件 並 賦給a,以後每次再執行 var a in getlist 的時候 呼叫 movenext.直到迴圈結束.期間getlis...