2012-05-25 16 views

回答

41

數組(A系統名稱空間)是一種數據類型,可以通過調用索引來使用。在運行時期間,除非使用複製數組並刪除舊數組的方法,否則無法真正改變數組的大小。

在.NET中,Visual Studio使用特殊的類來存儲數據。正因爲如此,表現實際上相當快。這也是因爲在數組中,您需要指定大小,因此數據會一個接一個地存儲。

實例:

int[] myNumbers= new int[5]; 
myNumbers[0] = 16; 

的ArrayList(System.Collections命名空間)是數據類型的集合。爲了填充ArrayList,可以使用.Add方法。 ArrayLists非常具有動態性,因爲當您添加和/或刪除項目時,性能保持不變。

ArrayList的內部結構是一個數組。

例子:

ArrayList myArray = new ArrayList(); 
myArray.Add(「Steph」); 
string str = myArray[0]; 

大多數時候,我們傾向於選擇數組列表,而不是數組,因爲我們不知道它會如何大轉出。當你知道你將要放入多少物品時,陣列是理想的。只要有可能,建議使用陣列,因爲這大大提高了性能。

數組是同類數據的序列,而ArrayList是異構數據的序列。這就是爲什麼我們必須在ArrayLists中對每個數據進行類型轉換。

數組是多維的,但ArrayList始終是單維的。

數組是強類型的,並且可以很好地用作參數。如果你知道你的集合的長度並且它是固定的,你應該使用一個數組。

ArrayLists不是強類型,每個插入或重試都需要轉換才能恢復到原始類型。如果你需要一個方法來獲取一個特定類型的列表,那麼ArrayLists就會失敗,因爲你可以傳入一個包含任何類型的ArrayList。 ArrayLists在內部使用動態擴展數組,所以當內部數組達到其容量時,也可以擴大內部數組的大小。

+0

還有一個叫做簡單列表的對象。它如何與ArrayList進行比較。這似乎是一個更復雜的控制。 –

+2

List是Array和Array List的良好屬性的組合。像數組一樣,它包含同類數據。像ArrayList一樣,您可以繼續添加儘可能多的數據。 –

6

數組是一種低級數據結構,實質上映射到內存中的某個區域。 ArrayList是一個可變長度列表,實現爲object的數組,隨着列表增長而重新分配。

ArrayList因此有一些與管理內部數組大小有關的開銷,以及與訪問列表時將對象轉換爲正確類型相關的更多開銷。

此外,將所有內容存儲爲object意味着值類型在寫入時裝箱並在讀取時取消裝箱,這對性能極爲不利。使用List<T>,類似但強類型的可變大小列表可避免此問題。

事實上,ArrayList實際上有利於List<T>因爲.NET 2.0棄用。

+0

還有一個叫做簡單列表的對象。它如何與ArrayList進行比較。這似乎是一個更復雜的控制。 –

+0

@MikeOlson我解釋說我的答案已經......你讀過了嗎? – Asik

+0

對不起是我讀過它,但不知道列表是否與簡單列表相同。所以基本上這個簡單的列表基本上取代了數組列表,以便於使用。 –

1

數組是固定大小的存儲器中的連續塊,而一個ArrayList(儘管你應該優先列表,因爲.NET 2.0)包裹的陣列,以提供動態調整大小的存儲。

它們之間的「差異」是,就它們被封裝而言,ArrayList可調整大小,而數組不是。就實現而言:因爲ArrayList包裝(並重新分配)數組,它將需要比數組更多的內存(因爲它必須知道當前數量的元素,而不是其容量),此外ArrayList也如果內部容量達到內部容量,則需要CPU時間來重新分配和複製其內部陣列。

但是,實例化ArrayList並不比分配數組更昂貴。唯一的區別是需要初始化ArrayList狀態的少量指令。差異可以忽略不計,不值得擔心。

你會發現,如果你是爲自己創造一個可調整大小的採集手段重新分配的數組,那麼你最好不要使用ArrayList中/列表,因爲它已被徹底測試。

+1

有一個稱爲一個簡單的列表中的其他對象。它如何與ArrayList進行比較。這似乎是一個更復雜的控制。 –

+0

ArrayList和Generic List之間的主要區別是通用列表是類型安全的,而arraylist不是。 – DinoMyte