Set、List、HashMap優缺點比較,高效能集合
阿新 • • 發佈:2018-11-25
遍歷速度 | 插入刪除速度 | 隨機訪問速度 | 備註 | |
Set | 快 | 快 | 慢 | 比list多佔一個指標的儲存空間 |
List | 快 | 慢 | 快 | 必須之前知道陣列元素個數,因為申請記憶體是連續長度明確的 |
HashMap | 慢 | 快 | 快 | 適合海量資料,o(1)的隨機訪問速度,不是可遍歷 |
變體Set | 快 | 快 | 快 | set的基礎上多佔一個List的控制元件,不過各種效能都好 |
變體List | 快 | 插入快不能刪除 | 快 | 各種效能都好就是不能有刪除操作 |
變體Set:SetList,在SetList,儲存一個狀態(listEnable),呼叫get(index)方法時,如果listEnable=false,為該SetList建立一個List,用set元素填充List個元素,用List隨機訪問。如果listEnable=true,直接隨機訪問list。呼叫add和delete的時候設定listEnable為false,回收list的空間。這樣就有所有的優點,但是儲存空間是原來的2倍
變體List:建立一個足夠大的List,這個list只能插入不能刪除,一旦數量到達上限,新建一個list二倍容量的list把元素考過去。這樣只有不能刪除一個缺點,其他優點都有。