Java數(shù)據(jù)結(jié)構(gòu)
Java中的數(shù)據(jù)結(jié)構(gòu)主要分為Collection和map兩個接口(接口只提供抽象方法,并不提供實現(xiàn)),程序中主要使用的是數(shù)據(jù)結(jié)構(gòu)是這兩個接口的主要實現(xiàn)類。
Java中的數(shù)據(jù)結(jié)構(gòu)關(guān)系如下圖所示

image
List:有序的可重復(fù)的Collection
使用此接口能夠精確的控制每一個元素插入的位置,可以通過索引來訪問List中的元素。
- ArrayList采用數(shù)組實現(xiàn),數(shù)組的訪問速度要比鏈表快,所以ArrayList更適合查詢操作,
- LinkedList采用鏈表實現(xiàn),隨機插入和刪除的效率要高于數(shù)組,
- Vector是一種古老的實現(xiàn)類,采用數(shù)組的實現(xiàn),內(nèi)部方法使用了Sychronized關(guān)鍵字,是線程安全的。
List相關(guān)知識總結(jié)如下:

image
Map:‘鍵值’對映射的抽象接口,不包括重復(fù)的鍵。
- HashMap:是基于‘拉鏈法’實現(xiàn)的散列表,底層采用數(shù)組+鏈表實現(xiàn),一般用于單線程
- HashTable:基于‘拉鏈法’實現(xiàn)的散列表,一般用于多線程
- TreeMap:有序散列表,底層通過紅黑樹實現(xiàn)。
Map相關(guān)知識總結(jié)如下:

image
Java數(shù)據(jù)結(jié)構(gòu)的詳細(xì)信息可以參考我寫的其他博客。