? ? ? ? 在容器的基礎之上,java引入了數據結構的概念。數據結構可以簡單地理解成是一個以特定的布局方式來存儲數據的容器。但是我個人覺得這種理解方式不太合理,根據我們學的數據結構的內容,我更傾向于數據結構是數據在容器中的布局方式,而不是容器本身。
? ? ? ? 數據結構是數據的布局方式,那么根據數據的布局方式的不同,采用不同的數據結構的容器的自然也是不同的。根據數據結構的不同,不同的容器對于不同的操作反應效率是不同的,也就是說對于一個容器來說,某些操作是高效的,而另一些操作是低效的。這一點在我們之前介紹的容器ArrayList容器類和LinkedList容器類當中體現得較為明顯。ArrayList容器類的底層是通過數組來實現的,所以它的訪問效率較高但是增刪效率較低;而LinkedList類的底層是通過雙向鏈表實現的,它的訪問效率低下,但是增刪效率較高。從這個例子上也得出一個結論:每一種數據結構逗不是萬能的,都有它的優點和缺點。這也就是我們需要學習數據結構的原因,只有掌握了各種各樣的數據結構的特點才能在實際運用中原則合適的數據結構來處理問題。
? ? ? ? 數據結構可以分為邏輯結構個物理結構兩部分,邏輯結構指的是數據元素間抽象化的相互關系,而物理結構指的是存儲結構即數據在計算機中的存儲形式。按照邏輯結構來分類,數據結構可以分為線性結構、樹形結構以及圖形結構。線性結構中的元素存在一對一的關系,常見的線性結構有線性表、棧、隊列、串(一維數組)等。樹形結構中的元素和線性結構不同,它并不是一一對應的關系,一般是一對多的情況,常見的樹形結構有二叉樹、紅黑樹、B樹、哈夫曼樹等。圖形結構是一種多對多的數據結構,有點像網絡結構。圖形結構比較復雜而且應用不多,因此只做簡單了解。常見的圖形結構有:有向圖、無向圖、簡單圖等。
????????
????????