更新時間:2020-04-02 14:12:25 來源:動力節點 瀏覽2596次
1. 數據結構概述
Java的集合框架其實就是對數據結構的封裝,在學習集合框架之前,有必要先了解下數據結構。
1.1. 什么是數據結構(了解)
所謂數據結構,其實就是計算機存儲、組織數據的方式。
數據結構是用來模擬數據存儲操作的,其實就是對數據做增刪改查操作。
增:把某個數據存儲到某個容器中
刪:從容器中把某個數據刪除掉
改:把容器中某個數據替換成另一個數據
查:把容器中的數據查詢出來
不同的數據結構,底層采用不同的存儲方式(算法),在具體操作的時候效率是不一樣的,比如有的查詢速度很快,有的插入速度很快,有的操作頭和尾速度很快等。
常見的數據結構:
數組(Array)掌握
鏈表(Linked List)了解
哈希表(Hash)了解
棧(Stack)了解
隊列(Queue)了解
樹(Tree)了解
圖(Graph)
堆(Heap)
1.2. 數組結構
1.2.1. 模擬ArrayList(掌握)
假設我現在是某個籃球隊的教練,需要安排5個球員上場打球。此時需要模擬上場球員的存儲,簡單一點,我們就只存儲上場球員的球衣號碼。那么此時我需要以下幾個操作:
1.初始一個容量為5的容器,用來存儲場上的5個球衣號碼。
2.安排5個球員上場,比如球員號碼分別為11、22、33、44、55。
3.查詢指定索引位置球員的球衣號碼是多少,如查詢索引位置為2的球衣號碼是33。
4.替換場上索引位置為2的球員,使用333號替換33號。
5.罰下場上索引位置為2的球員(直接罰下,沒有補位)。
6.打印出場上球員的球衣號碼,打印風格如 [11,22,33,44,55]。
操作前后效果圖:
1.2.2. 初始化操作(掌握)
使用Integer數組來存儲場上球員號碼,提供了兩個構造器,一個用于自定義初始化容量,一個用于使用默認的初始化容量10。
測試代碼:
1.2.3. 打印操作(掌握)
1.2.4. 保存操作(掌握)
測試代碼
輸出結果:
[]
[11,22,33,44,55]
因為數組的長度是固定的,此時的players數組只能存儲5個元素,如果再多存儲一個就報錯:數組索引越界。此時就要考慮在保存操作時對數組做擴容操作,擴容的原理是:
創建一個原數組長度兩倍長的新數組
把舊數組中的所有元素拷貝到新數組中
把新數組的引用賦給舊數組變量
保存操作時擴容操作:
//向場上添加一個球員號碼
1.2.5. 查詢操作(掌握)
需求:查詢指定索引位置球員的球衣號碼是多少,如查詢索引位置為2的球衣號碼是33。
其實就是返回數組中,指定索引對應的元素值。
測試代碼:
Integer playerNum = list.get(2);
System.out.println(playerNum);
輸出結果:
33
1.2.6. 修改操作(掌握)
需求:替換場上索引位置為2的球員,使用333號替換33號。
1.2.7. 刪除操作(掌握)
需求:罰下場上索引位置為2的球員(直接罰下,沒有補位)。
刪除操作的原理,把后續的元素整體往前挪動一個位置。
1.2.8. 讓容器支持存儲任意數據類型的元素(掌握)
此時元素類型是Integer類型,也就是只能存儲整型的數據,但是卻不能存儲其他類型的數據,此時我們可以考慮吧元素類型改成Object,那么Object數組可以存儲任意類型的數據。
1,首先是定義成員變量和構造器:
2,添加和查詢方法:
3,替換和刪除方法:
4,打印方法:
1.2.9. 數組的性能分析(了解)
在計算機科學中,算法的時間復雜度是一個函數,它定性描述了該算法的運行時間,常用大O符號來表述。
時間復雜度是同一問題可用不同算法解決,而一個算法的質量優劣將影響到算法乃至程序的效率。算法分析的目的在于選擇合適算法和改進算法。
我們在這里針對ArrayList存儲數據的增刪改查(CRUD)做性能分析:
保存操作:
如果保存在數組的最后一個位置,至少需要操作一次。
如果保存在數組的第一個位置,如果存在N個元素,此時需要操作N次(后面的元素要整體后移)。
平均: (N+1) /2 次。 N表示數組中元素的個數。 如果要擴容,更慢,性能更低。
刪除操作:
如果刪除最后一個元素,操作一次。
如果刪除第一個元素,操作N次。
平均:(N+1)/2次.
修改操作: 操作1次.
查詢操作:根據索引查詢元素: 操作1次.
結論:基于數組的數據結構做查詢是和修改是非常快的,做保存和刪除操作比較慢了。
那如果想保證保存和刪除操作的性能,此時就得提提鏈表這種數據結構了。
以上就是動力節點java培訓機構的小編針對“Java基礎學習:java數據結構視頻”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
Java零基礎學習視頻
2020Java零基礎教程:http://www.dabaquan.cn/javavideo/110.html
2020JavaSE進階:http://www.dabaquan.cn/javavideo/144.html
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習