![jdk1.8中Map遍歷3種方式,100萬數據性能測試報告](http://p2.ttnews.xyz/loading.gif)
背景
程序員實戰開發中集合用的是非常非常多的,方法入參、數據轉換、出參等等.
學習目標
- 搞清楚Map的迭代器iterator使用
- 搞清楚Map3種迭代方式的性能
常見技巧
程序員開始學習啦,數據初始化準備
Map跟Set是對兄弟,很多特性都相同,請看下面分析
![jdk1.8中Map遍歷3種方式,100萬數據性能測試報告](http://p2.ttnews.xyz/loading.gif)
entrySet迭代方式
這裡只舉例子下面分析原理,while 或foreach只是語法變化了,本質還是通過迭代器
entrySet這名字看上去就是個Set
keySet迭代方式
values方式
-----------------源碼分析------------------------
jdk設計者非常的智慧,Map本來是沒有iterator方法的,設計者通過一個內部類EntrySet來讓Map擁有Set的能力
Map 、Set 都無序的,但Map是裝一對數據K,V,然後JDK設計者搞出了下面類型
Set
通過繼承AbstractSet然後就有了set的特性,把key、value封裝到一個叫Map.Entry
Entry是個內部對象
keySet思路差不多,請看我截圖源碼
迭代器方法都差不多,都是通過nextNode()取相應數據,注意接口Iterator
Set其實可以當Map來用,請看源碼
他的K就是Set的元素,V是固定的一個值Object
還有很多細節請程序員沒自己看JDK,
-----------性能測試報告------------------------
1萬數據
10萬數據
100萬數據
總結
- jdk1.8放心的用entrySet吧,性能測試非常完美。
- 把Map看成特殊的Set,把Set看成特殊的Map【原因看看源碼你就發現了】。
又get到新知識的,請關注啊
程序汪汪持續輸入
閱讀更多 程序汪汪 的文章