JAVA學習總結-經常使用數據結構

java中集合框架其實就是數據結構的實現的封裝;前端

參考資料:任小龍教學視頻java

 

1,什麼是數據結構?算法

數據結構是計算機存儲,組織數據的方式;後端

數據結構是指相互之間存在一種或多種特定關係的數據元素的集合;數組

一般狀況下,精心選擇的數據結構可帶來更高的運行或者存儲效率,數據結構

數據結構每每同高效的檢索算法和索引技術有關;框架

 

2,數據結構的基本功能性能

增(Create)  刪(Delete)   改(Update)  查(Read)spa

 

3,常見的數據結構視頻

3.1,數組Array;

數組是最簡單的數據結構;是用來存放同一種數據類型的集合.

從增刪改查分析數組的性能:

增:在數組的最後一個位置添加元素是很方便的,可是要是想在第一個位置添加元素就很麻煩了,後面的全部元素都要總體後移,容量不夠還要進行擴容;

刪:把數組的最後一個元素刪除是很方便的,可是要刪除第一個位置的元素就很麻煩,後面的全部元素都要總體前移;

改:修改指定下標的元素只要操做一次便可;

查:若是查詢指定下標的元素只要操做一次便可,若是查詢指定元素的下標,此時須要使用線性搜索(挨個找),

綜上:數組的改查性能比較高,增刪性能比較低;

 

3.2鏈表Linked List; 

 鏈表是經過引用來表示上一個節點和下一個節點的關係;

   1》單點鏈表// 只能從頭遍歷到尾/只能從尾遍歷到頭

經過next存儲下一個節點,Node next表示的就是下一個節點;

 

   2》雙向列表// 既能夠從頭遍歷到尾,也能從尾遍歷到頭

經過prev表示上一個節點,Node prev表示的是上一個節點;

 

從增刪改查分析鏈表的性能:

增:雙向鏈表能夠直接獲取第一個節點和最後一個節點.若是新增的元素在第一個位置或者最後一個位置,則操做只有一次;

刪:把第一個元素或者最後一個元素刪除只要操做一次;

改:不存在下標的概念,須要進行遍歷;

查:不存在下標的概念,須要進行遍歷;

綜上:鏈表的增刪性能較高,改查性能較低;

 

 

 

3.3棧Stack;

是一種運算受限的線性表,後進先出(LIFO);

僅容許在列表的一端添加和刪除元素,這一端被稱爲棧頂,相對的把另外一端稱爲棧底

向一個棧中添加元素,又稱爲壓棧或者進棧或者入棧,他是把新元素放在棧頂元素的上面,使之成爲新的棧頂元素;

從一個棧刪除元素,又稱之爲出棧,他是把棧頂元素刪掉,使之相鄰的元素成爲棧頂元素;

棧是基於數組實現的,下標爲0的元素就是棧底元素,最後一個元素就是棧頂元素;

 

3.4隊列Queue;

隊列是一種特殊的線性表,特殊之處在於,只容許表的前端進行刪除操做,表的後端進行添加操做

和棧同樣,隊列是一種受限的線性表

進行插入操做的端稱爲隊尾,進行刪除操做的端稱爲隊頭;

單向隊列:先進先出(FIFO)只能從隊列尾插入數據,只能從隊列頭刪除數據;

雙向隊列:既能夠從隊列尾/頭插入數據,也能夠從隊列頭/尾刪除數據;

 

3.5哈希表Hash

在通常的數組中,元素在數組中的下標位置是隨機的,元素的取值和元素的位置之間存在不肯定的關係;

所以數組在查找值時,須要把查找值和一系列的元素進行比較;此時的查詢效率依賴於查找過程當中所進行的比較次數;

若是元素的值(value)和數組中的下標(index)有一個肯定的對應關係(hash),

公式:index = hash(value);

這樣的數組就稱之爲哈希表,哈希表最大的用處就是提供查找數據的效率;

通常狀況不會把哈希碼(hashCode)做爲數組元素的下標,由於哈希碼較大,容易越界;能夠在哈希碼和下標之間作映射關係,

 

數組會記錄元素的添加順序,而且容許元素重複;

哈希表不會記錄元素的添加順序(哈希算法進行排序使之一一對應),不容許重複,緣由是:若是元素重複,致使哈希碼值相等,致使下標相等

相關文章
相關標籤/搜索