JAVA中常用的數據結構和XML解析

1常見的數據結構

1.1 數組(Array)

在程序設計中,爲了處理方便,把具有相同類型的若干變量按有序的形式組織起來。這些按序排列的同類數據元素的集合稱爲數組。
在C語言中,數組屬於構造數據類型。一個數組可以分解爲多個數組元素,這些數組元素可以是基本數據類型或是構造類型。
因此按數組元素的類型不同,數組又可分爲數值數組字符數組指針數組結構數組等各種類別

1.2 棧(Stack)

棧是隻能在某一端插入和刪除的特殊線性表。它按照先進後出的原則存儲數據,先進入的數據被壓入棧底,最後的數據在棧頂,需要讀數據的時候從棧頂開始彈出數據(最後一個數據被第一個讀出來)

1.3 對列(Queue)

一種特殊的線性表,它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作。進行插入操作的端稱爲隊尾,進行刪除操作的端稱爲對頭。隊列中沒有元素時,稱爲空隊列

1.4 鏈表(Linked List)

一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的
鏈表由一系列結點(鏈表中的每一個元素稱爲結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:
一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域

1.5 樹(Tree)

樹是包含n(n>0)個結點的有窮集合K,且在K中定義了一個關係NN滿足以下條件:

  • 有且僅有一個結點K0,它對於關係N來說沒有前驅,稱K0爲樹的根結點,簡稱爲根(root
  • 除K0外,K中的每個結點,對於關係N來說有且僅有一個前驅
  • K中各結點,對關係N來說可以有m個後繼(m>=0

1.6 堆(Heap)

在計算機科學中,堆是一種特殊的樹形數據結構,每個結點都有一個值。
通常我們所說的對的數據結構,是指二叉堆。
堆的特點是根結點的值最小(或最大),且根結點的兩個子樹也是一個堆

1.7 圖(Graph)

圖是由結點的有窮集合V和邊的集合E組成。
其中,爲了與樹形結構加以區別,在圖結構中常常將結點稱爲頂點,邊是頂點的有序偶對,若兩個頂點之間存在一條邊,就表示這兩個頂點具有相鄰關係

1.8 散列表(Hash)

若結構中存在關鍵字和K相等的記錄,則必定在f(K)的存儲位置上。
由此,不需比較便可直接取得所查詢的記錄,稱這個對應關係f爲散列函數(Hash function),按這個思想建立的表爲散列表

2 XML解析

2.1 JDOM解析

爲減少DOM、SAX的編碼量,出現了JDOM
優點:20-80原則,極大地減少了代碼量。
使用場合:要實現的功能簡單,如解析、創建等,但在底層,JDOM還是使用SAX,DOM,Xanan文檔

2.2 SAX解析

爲解決DOM的問題,出現了SAXSAX事件驅動。當解析器發現元素開始,元素結束,文本、文檔的喀開始或結束等時發送事件,程序員編寫響應這些事件的代碼,保存數據
優點:不用事先調入整個文檔,佔用資源小。SAX解析器代碼比DOM解析器代碼小,適用於Applet下載
缺點:不是持久的,事件過後若沒保存數據,那麼數據就丟了。無狀態性,從事件中只能得到文本,但不知該文本屬於哪個元素
使用場合:Applet,只需XML文檔的少量內容,很少回頭訪問,機器內存少

2.3 DOM解析

XML文檔的已解析版本定義了一組接口。解析器讀入整個文檔,然後構建一個駐留內存的樹結構,然後代碼就可以使用DOM接口來操作這個樹結構
優點:整個文檔樹在內存中,便於操作,支持刪除、修改、重新排列等多種功能
缺點:將整個文檔調入內存中(包括無用的節點),浪費時間和空間
使用場合:一旦解析了文檔還需多次訪問這些數據,硬件資源充足(內存、CPU

2.4 DOM4J解析

DOM4J是一個非常優秀的Java XML APL,具有性能優異,功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟件。
如今可以看到越來越多的Java軟件都在使用DOM4J來讀寫XML,特別值得一提的是連SunJAXM也在用DOM4J

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章