首先,讓我們看看遍歷地圖的方法。
這應該算是比較常見的使用方式,也比較容易理解。
KeySet:獲取映射中的所有鍵,然後依次遍歷每個鍵。
這是我在開發中通常使用的方式,簡單易懂。
但是它的性能如何呢?後續有待揭曉。
我不知道有多少人使用過Java8中的並行模式,它本質上是壹種並行處理方法。
表現如何?稍後會宣布。
如果不能,為什麽不嘗試尋找外援呢?
測試環境如下:英特爾i7-4790 3.60 GHz,16 GB。
測試集是壹個小地圖集(約100個元素),每種方法的時間消耗如下:
從結果可以看出,當數據量相對較小時,使用Java 8中的foreach暫時領先。
測試集是元素數據為1000的地圖集,測試結果如下:
從結果集來看,在數據量中等的情況下,外援Eclipse(CS)collections中的MutableMap表現最好,獲得了第壹名。
其次是Java 8中的foreach,排名第二。
測試集是壹個元素數據為100000(十萬級)的地圖集,測試結果如下:
使用叠代器和映射。詞條方法,1排名第壹,幾乎領先第二名7s。
第二名是Eclipse(CS)集合中的MutableMap,它排名第二,在大量數據下表現良好。
它指的是Java8中的foreach,以前在小數據量中表現良好,但排名較低,但仍然超過了使用Java 8的Stream API。
還有壹個現象:Java8中使用並行模式計算的並行流api在有大量數據時的性能優於foreach和stream api。
下表顯示了每種方法在不同數據量下的性能。
在正常開發中,當數據量不是太大時,除了外援之外,Java 8中的foreach方法3的性能更好。但是,流API並行方法8的並行操作沒有預期的那麽好,而流API方法7相當令人滿意。
本文主要列舉了多種遍歷地圖的方法,每種方法各有特點,有人喜歡foreach的通俗易懂;有些人喜歡小溪的整潔。
從性能角度來看,在數據量較小的情況下,首選Java8 Foreach方法3。
叠代器和映射。在數據量較大的情況下,建議使用1的錄入方法。
我是大黃,壹個只會寫HelloWorld的程序員。下次見。