1. 程式人生 > >java ArrayList,HashMap, LinkedList的簡單概括與分析(一)

java ArrayList,HashMap, LinkedList的簡單概括與分析(一)

首先基本概況一下ArrayList,ArrayList本質上是一個集合,通過動態的擴充集合,解決了普通集合的容量問題,其次是HashMap,HashMap本質上將一個值對鍵放入一個由陣列與連結串列組成的特殊結構,解決通過key查詢值的問題,最後是LinkedList,LinkedList本質上就是一個雙向連結串列,同樣是解決擴容問題,相比ArrayList增刪改效率大幅提高,但查相比ArrayList明顯不如。 緊接著進行分析,ArrayList的主要成員變數是elementData(核心,動態陣列,預設為10),size(記錄當前陣列元素,預設為0),主要方法是add(新增新資料),get(根據你輸入的值獲取某個資料),remove(根據你輸入的值刪除某個資料),先講add,add會首先根據size判斷是否已經達到elementData陣列的上限,若達到,呼叫lang包下的Arrays.copyOf方法建立一個容量至少為原陣列1.5倍(程式碼中為* 3/2 + 1)的新elementData並把老elementData放入,擴容成功,並把輸入元素放入,反之,直接放入elementData即可,get,get會根據你輸入的int值與size進行比對,檢視是否存在該數,若存在返回該數,反之,報錯,remove,remove同樣和get一樣進行判斷,失敗報錯,成功則會呼叫lang包下的System.arraycopy方法,將要刪除數的後一位頂替刪除數,後一位繼續頂替,也就是被刪除數後所有元素整體前進一位,整個過程結束後將最後一位刪除,size–