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     22

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

課程價格 請咨詢

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

詳細(xì)介紹


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


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


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


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


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


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


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


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


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


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


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


  數(shù)組(Array)掌握


  鏈表(linked List)了解


  哈希表(Hash)了解


  棧(Stack)了解


  隊列(Queue)了解


  樹(Tree)了解


  圖(Graph)


  堆(Heap)


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


  1.2.1. 模擬ArrayList(掌握)


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


       1.初始一個容量為5的容器,用來存儲場上的5個球衣號碼。


  2.安排5個球員上場,比如球員號碼分別為11、22、33、44、55。


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


  4.替換場上索引位置為2的球員,使用333號替換33號。


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


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


  操作前后效果圖:


  1.2.2. 初始化操作(掌握)


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



  測試代碼:



  1.2.3. 打印操作(掌握)

  


  1.2.4. 保存操作(掌握)

  


  測試代碼

  


  輸出結(jié)果:


  []


  [11,22,33,44,55]


  因為數(shù)組的長度是固定的,此時的players數(shù)組只能存儲5個元素,如果再多存儲一個就報錯:數(shù)組索引越界。此時就要考慮在保存操作時對數(shù)組做擴(kuò)容操作,擴(kuò)容的原理是:


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


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


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


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


  //向場上添加一個球員號碼

  


  1.2.5. 查詢操作(掌握)


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


  其實就是返回數(shù)組中,指定索引對應(yīng)的元素值。

  


  測試代碼:


  Integer playerNum = list.get(2);


  System.out.println(playerNum);


  輸出結(jié)果:


  33


  1.2.6. 修改操作(掌握)


  需求:替換場上索引位置為2的球員,使用333號替換33號。



  1.2.7. 刪除操作(掌握)


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


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

  


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


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


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

  


  2,添加和查詢方法:

  


  3,替換和刪除方法:

  


  4,打印方法:

  


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


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


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


  我們在這里針對ArrayList存儲數(shù)據(jù)的增刪改查(CRUD)做性能分析:


  保存操作:


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


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


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


  刪除操作:


  如果刪除最后一個元素,操作一次。


  如果刪除第一個元素,操作N次。


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


  修改操作: 操作1次.


  查詢操作:根據(jù)索引查詢元素: 操作1次.


  結(jié)論:基于數(shù)組的數(shù)據(jù)結(jié)構(gòu)做查詢是和修改是非??斓模霰4婧蛣h除操作比較慢了。


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


  以上就是天津卓眾教育java培訓(xùn)機(jī)構(gòu)的小編針對“Java基礎(chǔ)學(xué)習(xí):java數(shù)據(jù)結(jié)構(gòu)視頻”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(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)啦提醒您:交易時請核實對方資質(zhì),對于過大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險,謹(jǐn)防上當(dāng)。