java數組、集合和數據結構知識*

1、數據結構知識。數據結構分爲邏輯結構和物理結構,下面是百度百科的數據結構知識html

數據的邏輯結構:指反映數據元素之間的邏輯關係的數據結構,其中的邏輯關係是指數據元素之間的先後件關係,而與他們在計算機中的存儲位置無關。邏輯結構包括:java

  1. 集合數組

數據結構中的元素之間除了「同屬一個集合」 的相互關係外,別無其餘關係;數據結構

2.線性結構異步

數據結構中的元素存在一對一的相互關係;url

3.樹形結構spa

數據結構中的元素存在一對多的相互關係;.net

4.圖形結構指針

數據結構中的元素存在多對多的相互關係。htm

邏輯結構除了這樣分還能夠分爲線性結構和非線性結構:

線性結構和非線性結構同屬於數據結構中的邏輯結構類型,線性結構是指該結構中的節點之間存在一對一的關係.其特色是開始節點和終端節點都是惟一的,除了開始節點和終端節點外,其他節點都有且僅有一個直接前驅,有且僅有一個直接後繼.此類型的存儲結構有:順序表(數組)、鏈表、堆棧結構、隊列結構等         非線性結構又包括集合、樹形結構、圖形結構或網狀結構,特色是數據元素之間存在一個對多個或多個對多個的關係,其中集合是一種關係極爲鬆散的結構. 


數據的物理結構:經常使用兩種存儲結構:順序存儲結構和鏈式存儲結構。順序映像藉助元素在存儲器中的相對位置來表示數據元素之間的邏輯關係。非順序映像藉助指示元素存儲位置的指針(pointer)來表示數據元素之間的邏輯關係。


2、數組

數組在數據結構中的邏輯結構:線性結構,物理結構:順序存儲。

瞭解數組的基礎知識:Java 數組基礎 ,瞭解數組的申明,在內存中的結構。

數組中數組長度是在申明時就固定了的,由於你申明的時候就要決定在內存中開闢的內存長度,因此數組的length是一個屬性,在數組對象new出來的時候就已經決定了。

數組還分了有序數組和無序數組,有序數組是指數組中的元素是排好序了的,排序有冒泡排序(每一次循環都冒出一個最大或者最小的)。排序數組能夠用java.util.Arrays這個類的方法進行,這個類的方法都是靜態的,都是一些對java數組的操做。


3、集合

在java中的集合和數據結構中的集合是不同的意義,數據結構中的集合是指:數據結構中的元素之間除了「同屬一個集合」 的相互關係外,別無其餘關係;而java中的集合是指一系列的有關數據的經常使用操做,有Arraylist,Map等等都是集合裏的東西,下面是有關集合的介紹Java集合類詳解

這裏的set就跟數據結構裏的set類似。

Vector和HashTable是同步的,別的都是異步的。

ArrayList底層實際就是一個數組若是這個數組滿了就將建立新數組比舊數組大的而後複製舊數組到新數組去,因此ArrayList又稱動態數組。查詢第i個元素比LinkedList快,LinkedList須要移動指針來查。

LinkedList底層實際採用的是雙鏈表,因此add都某個指定位置i,和Remove某個指定元素i效率比ArrayList,由於只須要移動一下指針,而ArrayList因爲採用數組結構,須要移動i以後的整個數據位置。

Vector和ArrayList實現同樣的,只是實現了同步,因此效率比ArrayList低一點。

Stack繼承自Vector,是後進先出的堆棧,把最後一個元素當棧頂,具體查看以下文章:java.util.Stack類簡介,java.util.Stack只是實現了隊列的功能,可是沒有隊列Queue的完整性和一致性,若是要使用隊列,建議使用Deque。

相關文章
相關標籤/搜索