java 常用集合類總結
阿新 • • 發佈:2018-12-25
在平常的程式碼開發中,集合類是經常會使用到的,比如用於列表快取的ArrayList,用於做對映關係的Map等等
最近重點看了下java集合類的層次繼承關係和內部儲存結構,做個總結以便後面可以隨時翻翻。
java中的集合,不管是List,Set,還是Map,都是繼承自collection介面,這個介面主要定義了集合類的一些公關方法,比如isEmpty(), remove(),add()等,在使用集合類的時候除了順序遍歷,還提供了一種方便的迭代器遍歷的方法,在遍歷過程中需要remove元素的必須試用迭代器遍歷(在刪除元素時,集合內部的index會發生變化,使用順序遍歷可能會產生unindex的情況)。
為了實現迭代遍歷,定義了Iterable介面,collection介面繼承了Iterable介面,以支援所有集合類實現迭代遍歷。
1.List
1.1 ArrayList
ArrayList 是一個動態陣列,以一個數組的格式進行儲存,但是可以動態增長,繼承自AbstractList,實現了List介面
ArrayList是一個非執行緒安全的類,使用時最好在一個執行緒中操作,建構函式可以提供一個數組的初始化大小,不提供預設按16來進行陣列的初始化,往ArrayList增加元素時,都會先判斷是否還有空間存在元素,如果沒有空間,則會重新申請一個
(((以前長度*3)/2)+1)大小的陣列空間,並將原來的元素全部copy到新的陣列中,這樣會帶來效率上的損耗。建議在初始化時,能夠確定儲存空間的儘量提供合適的初始化陣列大小,避免因為陣列動態擴容帶來的效率損耗。