Java8 forEach


  這幾天學了下java8的新特性,java8最顯著的改變之一就是加入lambda表達式,這個以后再說。

  定義少量的數據  對少量的數據進行遍歷

Map<String,Integer> map = new HashMap<>(16);
map.put("a",10);
map.put("b",20);
map.put("c",30);
map.put("d",40);
map.put("e",50);
//通常方法1 foreach entrySet遍歷  entry是map里面定義的一個接口
for (Map.Entry<String,Integer> entry:map.entrySet()){
}

//通常方法2 Iterator接口遍歷
Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()){
Map.Entry<String,Integer> entry = iterator.next();
}

//通常方法3 遍歷keySet 通過key 取值
for (String key : map.keySet()){
Integer value = map.get(key);
}

//java8 foreach+lambda表達式遍歷
map.forEach((k,v)-> {

});

通過兩個nanoTime相減 再除以1000 獲得各個方式的遍歷時間

forEach遍歷時間:50
iterator遍歷時間:5
遍歷key再取值 遍歷時間:230
java8 forEach遍歷時間:84222

其中 iterator時間是最短的,forEach 實際上就是iterator的語意簡化版 比iterator長一點,而遍歷key再取值,相較於直接獲得entry多了從hashmap 取出key所對應的value值,

而java8 forEach比其他兩個方式耗時長了很多,所以如果系統的性能需求比較高的話,對集合循環的遍歷,慎用forEach。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM