可能重複:
When to use ArrayList over array[] in c#?數組與數組列表中的顯着差異?
從存儲器或處理器的成本的角度來看,不存在似乎是陣列和ArrayList對象之間的差異顯著?
可能重複:
When to use ArrayList over array[] in c#?數組與數組列表中的顯着差異?
從存儲器或處理器的成本的角度來看,不存在似乎是陣列和ArrayList對象之間的差異顯著?
數組(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在內部使用動態擴展數組,所以當內部數組達到其容量時,也可以擴大內部數組的大小。
還有一個叫做簡單列表的對象。它如何與ArrayList進行比較。這似乎是一個更復雜的控制。 –
List是Array和Array List的良好屬性的組合。像數組一樣,它包含同類數據。像ArrayList一樣,您可以繼續添加儘可能多的數據。 –
數組是一種低級數據結構,實質上映射到內存中的某個區域。 ArrayList
是一個可變長度列表,實現爲object
的數組,隨着列表增長而重新分配。
ArrayList
因此有一些與管理內部數組大小有關的開銷,以及與訪問列表時將對象轉換爲正確類型相關的更多開銷。
此外,將所有內容存儲爲object
意味着值類型在寫入時裝箱並在讀取時取消裝箱,這對性能極爲不利。使用List<T>
,類似但強類型的可變大小列表可避免此問題。
事實上,ArrayList
實際上有利於List<T>
因爲.NET 2.0棄用。
還有一個叫做簡單列表的對象。它如何與ArrayList進行比較。這似乎是一個更復雜的控制。 –
@MikeOlson我解釋說我的答案已經......你讀過了嗎? – Asik
對不起是我讀過它,但不知道列表
數組是固定大小的存儲器中的連續塊,而一個ArrayList(儘管你應該優先列表,因爲.NET 2.0)包裹的陣列,以提供動態調整大小的存儲。
它們之間的「差異」是,就它們被封裝而言,ArrayList可調整大小,而數組不是。就實現而言:因爲ArrayList包裝(並重新分配)數組,它將需要比數組更多的內存(因爲它必須知道當前數量的元素,而不是其容量),此外ArrayList也如果內部容量達到內部容量,則需要CPU時間來重新分配和複製其內部陣列。
但是,實例化ArrayList並不比分配數組更昂貴。唯一的區別是需要初始化ArrayList狀態的少量指令。差異可以忽略不計,不值得擔心。
你會發現,如果你是爲自己創造一個可調整大小的採集手段重新分配的數組,那麼你最好不要使用ArrayList中/列表,因爲它已被徹底測試。
有一個稱爲一個簡單的列表中的其他對象。它如何與ArrayList進行比較。這似乎是一個更復雜的控制。 –
ArrayList和Generic List之間的主要區別是通用列表是類型安全的,而arraylist不是。 – DinoMyte
@NikhilAgrawal不是該主題的重複,因爲問題是專門關於性能差異,而不是使用上下文。 – Asik
我懷疑ArrayList會更慢,因爲您必須在檢索時轉換數組中的每個元素。 – Matthew