遍歷速度 | 插入刪除速度 | 隨機訪問速度 | 備注 | |
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把元素考過去。這樣只有不能刪除一個缺點,其他優點都有。