Java基礎(chǔ)學(xué)習(xí):java數(shù)據(jù)結(jié)構(gòu)視頻

Java基礎(chǔ)學(xué)習(xí):java數(shù)據(jù)結(jié)構(gòu)視頻

天津卓眾教育      2022-04-20 01:42:01     16

Java基礎(chǔ)學(xué)習(xí):java數(shù)據(jù)結(jié)構(gòu)視頻,  1. 數(shù)據(jù)結(jié)構(gòu)概述  Java的集合框架其實(shí)就是對(duì)數(shù)據(jù)結(jié)構(gòu)的封裝,在學(xué)習(xí)集合框架之前,有必要先了解下數(shù)據(jù)結(jié)構(gòu)。  1.1. 什么

課程價(jià)格 請(qǐng)咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹


  1. 數(shù)據(jù)結(jié)構(gòu)概述


  Java的集合框架其實(shí)就是對(duì)數(shù)據(jù)結(jié)構(gòu)的封裝,在學(xué)習(xí)集合框架之前,有必要先了解下數(shù)據(jù)結(jié)構(gòu)。


  1.1. 什么是數(shù)據(jù)結(jié)構(gòu)(了解)


  所謂數(shù)據(jù)結(jié)構(gòu),其實(shí)就是計(jì)算機(jī)存儲(chǔ)、組織數(shù)據(jù)的方式。


  數(shù)據(jù)結(jié)構(gòu)是用來模擬數(shù)據(jù)存儲(chǔ)操作的,其實(shí)就是對(duì)數(shù)據(jù)做增刪改查操作。


  增:把某個(gè)數(shù)據(jù)存儲(chǔ)到某個(gè)容器中


  刪:從容器中把某個(gè)數(shù)據(jù)刪除掉


  改:把容器中某個(gè)數(shù)據(jù)替換成另一個(gè)數(shù)據(jù)


  查:把容器中的數(shù)據(jù)查詢出來


  不同的數(shù)據(jù)結(jié)構(gòu),底層采用不同的存儲(chǔ)方式(算法),在具體操作的時(shí)候效率是不一樣的,比如有的查詢速度很快,有的插入速度很快,有的操作頭和尾速度很快等。


  常見的數(shù)據(jù)結(jié)構(gòu):


  數(shù)組(Array)掌握


  鏈表(linked List)了解


  哈希表(Hash)了解


  棧(Stack)了解


  隊(duì)列(Queue)了解


  樹(Tree)了解


  圖(Graph)


  堆(Heap)


  1.2. 數(shù)組結(jié)構(gòu)


  1.2.1. 模擬ArrayList(掌握)


  假設(shè)我現(xiàn)在是某個(gè)籃球隊(duì)的教練,需要安排5個(gè)球員上場(chǎng)打球。此時(shí)需要模擬上場(chǎng)球員的存儲(chǔ),簡(jiǎn)單一點(diǎn),我們就只存儲(chǔ)上場(chǎng)球員的球衣號(hào)碼。那么此時(shí)我需要以下幾個(gè)操作:


       1.初始一個(gè)容量為5的容器,用來存儲(chǔ)場(chǎng)上的5個(gè)球衣號(hào)碼。


  2.安排5個(gè)球員上場(chǎng),比如球員號(hào)碼分別為11、22、33、44、55。


  3.查詢指定索引位置球員的球衣號(hào)碼是多少,如查詢索引位置為2的球衣號(hào)碼是33。


  4.替換場(chǎng)上索引位置為2的球員,使用333號(hào)替換33號(hào)。


  5.罰下場(chǎng)上索引位置為2的球員(直接罰下,沒有補(bǔ)位)。


  6.打印出場(chǎng)上球員的球衣號(hào)碼,打印風(fēng)格如 [11,22,33,44,55]。


  操作前后效果圖:


  1.2.2. 初始化操作(掌握)


  使用Integer數(shù)組來存儲(chǔ)場(chǎng)上球員號(hào)碼,提供了兩個(gè)構(gòu)造器,一個(gè)用于自定義初始化容量,一個(gè)用于使用默認(rèn)的初始化容量10。



  測(cè)試代碼:



  1.2.3. 打印操作(掌握)

  


  1.2.4. 保存操作(掌握)

  


  測(cè)試代碼

  


  輸出結(jié)果:


  []


  [11,22,33,44,55]


  因?yàn)閿?shù)組的長(zhǎng)度是固定的,此時(shí)的players數(shù)組只能存儲(chǔ)5個(gè)元素,如果再多存儲(chǔ)一個(gè)就報(bào)錯(cuò):數(shù)組索引越界。此時(shí)就要考慮在保存操作時(shí)對(duì)數(shù)組做擴(kuò)容操作,擴(kuò)容的原理是:


  創(chuàng)建一個(gè)原數(shù)組長(zhǎng)度兩倍長(zhǎng)的新數(shù)組


  把舊數(shù)組中的所有元素拷貝到新數(shù)組中


  把新數(shù)組的引用賦給舊數(shù)組變量


  保存操作時(shí)擴(kuò)容操作:


  //向場(chǎng)上添加一個(gè)球員號(hào)碼

  


  1.2.5. 查詢操作(掌握)


  需求:查詢指定索引位置球員的球衣號(hào)碼是多少,如查詢索引位置為2的球衣號(hào)碼是33。


  其實(shí)就是返回?cái)?shù)組中,指定索引對(duì)應(yīng)的元素值。

  


  測(cè)試代碼:


  Integer playerNum = list.get(2);


  System.out.println(playerNum);


  輸出結(jié)果:


  33


  1.2.6. 修改操作(掌握)


  需求:替換場(chǎng)上索引位置為2的球員,使用333號(hào)替換33號(hào)。



  1.2.7. 刪除操作(掌握)


  需求:罰下場(chǎng)上索引位置為2的球員(直接罰下,沒有補(bǔ)位)。


  刪除操作的原理,把后續(xù)的元素整體往前挪動(dòng)一個(gè)位置。

  


  1.2.8. 讓容器支持存儲(chǔ)任意數(shù)據(jù)類型的元素(掌握)


  此時(shí)元素類型是Integer類型,也就是只能存儲(chǔ)整型的數(shù)據(jù),但是卻不能存儲(chǔ)其他類型的數(shù)據(jù),此時(shí)我們可以考慮吧元素類型改成Object,那么Object數(shù)組可以存儲(chǔ)任意類型的數(shù)據(jù)。


  1,首先是定義成員變量和構(gòu)造器:

  


  2,添加和查詢方法:

  


  3,替換和刪除方法:

  


  4,打印方法:

  


  1.2.9. 數(shù)組的性能分析(了解)


  在計(jì)算機(jī)科學(xué)中,算法的時(shí)間復(fù)雜度是一個(gè)函數(shù),它定性描述了該算法的運(yùn)行時(shí)間,常用大O符號(hào)來表述。


  時(shí)間復(fù)雜度是同一問題可用不同算法解決,而一個(gè)算法的質(zhì)量?jī)?yōu)劣將影響到算法乃至程序的效率。算法分析的目的在于選擇合適算法和改進(jìn)算法。


  我們?cè)谶@里針對(duì)ArrayList存儲(chǔ)數(shù)據(jù)的增刪改查(CRUD)做性能分析:


  保存操作:


  如果保存在數(shù)組的最后一個(gè)位置,至少需要操作一次。


  如果保存在數(shù)組的第一個(gè)位置,如果存在N個(gè)元素,此時(shí)需要操作N次(后面的元素要整體后移)。


  平均: (N+1) /2 次。 N表示數(shù)組中元素的個(gè)數(shù)。 如果要擴(kuò)容,更慢,性能更低。


  刪除操作:


  如果刪除最后一個(gè)元素,操作一次。


  如果刪除第一個(gè)元素,操作N次。


  平均:(N+1)/2次.


  修改操作: 操作1次.


  查詢操作:根據(jù)索引查詢?cè)? 操作1次.


  結(jié)論:基于數(shù)組的數(shù)據(jù)結(jié)構(gòu)做查詢是和修改是非??斓?,做保存和刪除操作比較慢了。


  那如果想保證保存和刪除操作的性能,此時(shí)就得提提鏈表這種數(shù)據(jù)結(jié)構(gòu)了。


  以上就是天津卓眾教育java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“Java基礎(chǔ)學(xué)習(xí):java數(shù)據(jù)結(jié)構(gòu)視頻”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。


  Java零基礎(chǔ)學(xué)習(xí)視頻


  2020Java零基礎(chǔ)教程:http://www.bjpowernode.com/javavideo/110.html


  2020JavaSE進(jìn)階:http://www.bjpowernode.com/javavideo/144.html


Java基礎(chǔ)學(xué)習(xí) Java視頻

培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。