關於Java的數據結構HashMap,ArrayList的使用總結及使用場景和原理分析

  使用,必需要知道其原理,在課堂上學過散列函數的用法及其原理。但一直不知道怎麼實踐。java

  後來,在實際項目中,須要作一個流量分析預處理程序。每5分鐘會接收到現網抓來的數據包並解析,每一個文本文件大概200M左右,數據量頗多。要求根據用戶ID和協議ID爲key,計算其流量平均值。算法

  起初的想法是按行加載每一條數據並放入ArrayList中,而後寫個算法比較每個數據的用戶ID和協議ID,若是同樣則累加其流量。測試中發現其效率極低,爲此第一反應是改進算法。怎麼作才更高效呢?後來想到了課堂中學到的散列函數,因而寫了個MD5散列函數將用戶ID和協議ID爲key進行散列,若獲得的結果相同則累加其流量,循環一次數據便可,效率爲O(n)。後來經過查詢資料發現此步驟畫蛇添足,java內置的數據結構HashMap已經內置了高效的散列算法。因而省略此算法步驟,直接使用java的HashMap。數據結構

  在實踐中瞭解了一些東西,纔會對其掌握的更加深入,要知其然,知其因此然。函數

相關文章
相關標籤/搜索