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