更新時間:2019-12-06 15:19:24 來源:動力節(jié)點 瀏覽3640次
Java數(shù)據(jù)結(jié)構(gòu)
要理解Java數(shù)據(jù)結(jié)構(gòu),必須能清楚何為數(shù)據(jù)結(jié)構(gòu)?
數(shù)據(jù)結(jié)構(gòu):
Data_Structure,它是儲存數(shù)據(jù)的一種結(jié)構(gòu)體,在此結(jié)構(gòu)中儲存一些數(shù)據(jù),而這些數(shù)據(jù)之間有一定的關(guān)系。
而各數(shù)據(jù)元素之間的相互關(guān)系,又包括三個組成成分,數(shù)據(jù)的邏輯結(jié)構(gòu),數(shù)據(jù)的存儲結(jié)構(gòu)和數(shù)據(jù)運算結(jié)構(gòu)。
而一個數(shù)據(jù)結(jié)構(gòu)的設(shè)計過程分成抽象層、數(shù)據(jù)結(jié)構(gòu)層和實現(xiàn)層。
數(shù)據(jù)結(jié)構(gòu)在Java的語言體系中按邏輯結(jié)構(gòu)可以分為兩大類:線性數(shù)據(jù)結(jié)構(gòu)和非線性數(shù)據(jù)結(jié)構(gòu)。
Java數(shù)據(jù)結(jié)構(gòu)之:線性數(shù)據(jù)結(jié)構(gòu)
線性數(shù)據(jù)結(jié)構(gòu):常見的有一維數(shù)組,線性表,棧,隊列,雙隊列,串。
一維數(shù)組
在Java里面常用的util有:String ,int ,ArrayList,Vector,CopyOnWriteArrayList等,及可以通過一維數(shù)組自己實現(xiàn)不同邏輯結(jié)構(gòu)的Util類,而ArrayList封裝了一些的基本操作方法。
ArrayList和Vector的區(qū)別是:Vector是線程安全的,方法同步。CopyOnWriteArrayList也是線程安全的但效率要比Vector高很多。
數(shù)組這種數(shù)據(jù)結(jié)構(gòu)典型的操作方法,是根據(jù)下標進行操作的,所以insert的的時候可以根據(jù)下標插入到具體的某個位置,但是這個時候它后面的元素都得往后面移動一位。所以插入效率比較低,更新,刪除效率也比較低,而查詢效率非常高,查詢效率時間復(fù)雜度是1。
線性表
線性表是有序的儲存結(jié)構(gòu)、鏈式的儲存結(jié)構(gòu)。鏈表的物理儲存空間是不連續(xù)的,鏈表的每一個節(jié)點都知道上一個節(jié)點、或者下一個節(jié)點是誰,通常用Node表示。常見的有順序鏈表(LinkedList、Linked***),單項鏈表(里面只有Node類),雙向鏈表(兩個Node類),循環(huán)鏈表(多個Node類)等。
操作方法:插入效率比較高,插入的時候只需要改變節(jié)點的前后節(jié)點的連接即可。而查詢效率就比較低了,如果實現(xiàn)的不好,需要整個鏈路找下去才能找到應(yīng)該找的元素。所以常見的方法有:add(index,element),addFirst(element),addLast(element),getFirst,getLast,get(element)等。
常見的Uitil有:LinkedList,LinkedMap等,而這兩個JDK底層也做了N多優(yōu)化,可以有效避免查詢效率低的問題,當(dāng)自己實現(xiàn)的時候需要注意。其實樹形結(jié)構(gòu)可以說是非線性的鏈式儲存結(jié)構(gòu)。
棧Stack
棧,最主要的是要實現(xiàn)先進后出,后進先出的邏輯結(jié)構(gòu)。來實現(xiàn)一些場景對邏輯順序的要求。所以常用的方法有push(element)壓棧,pop出棧。
java.util.Stack就實現(xiàn)了這用邏輯,而Java的Jvm里面也用的到了此種數(shù)據(jù)結(jié)構(gòu),就是線程棧,來保證當(dāng)前線程的執(zhí)行順序。
以上就是動力節(jié)點Java培訓(xùn)機構(gòu)小編介紹的“Java數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)方法”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。
Java全套自學(xué)資料
Java自學(xué)視頻教程(免費學(xué)習(xí)):http://m.ilovecolors.com.cn/video.html
Java技術(shù)教程:http://m.ilovecolors.com.cn/tutorial/
相關(guān)文章
零基礎(chǔ)怎么自學(xué)Java,完整版Java學(xué)習(xí)路線圖
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費 15天面授
有基礎(chǔ) 直達就業(yè)
業(yè)余時間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)
初級 202925
初級 203221
初級 202629
初級 203743