我想知道什麼是在C#中ArrayList的初始大小?C#中ArrayList的初始大小是什麼?
回答
0
。見下文。
16
。 (我要的字符添加到該答案,因爲18個字符是最小)
編輯,糟糕 - 初始容量 16是初始大小是當然0的,因爲它是空的。必須學習如何閱讀。或者你必須學習如何形成你的問題。 ;)
再次編輯;在.NET 1.0中ArrayList的初始容量是16.在2.0中它是4,而現在 - 在.NET 3.5中 - 初始容量已經降低到0了。我沒有解釋爲什麼,你。
向列表中添加第一個元素時,容量將被設置爲4.之後,每當arraylist.Count eq arraylist.Capacity時,容量將翻倍。
這解釋了我在這裏的不同觀察。奇怪的。 – Joey 2009-10-14 08:45:52
您是否有.NET 2.0和3.5容量的源代碼/鏈接?有興趣知道更多關於這個......我認爲它仍然是16. – 2009-10-14 08:46:16
不,不能在MSDN或任何MS解釋爲此找到它。 – 2009-10-14 08:50:04
NOTE:以下看似只適用於.NET 3.5;在以前版本的框架中,值是不同的。
據我這裏測試了初始大小和容量爲零:
PS> $a = new-object system.collections.arrayList
PS> $a.Capacity
0
PS> $a.count
0
而且,看着反射器的源代碼,同樣也是如此:
public virtual int Capacity
{
get
{
return this._items.Length;
}
...
}
而且_items
得到在ctor中設置爲空的object[]
。
你是對的,從.NET 3.5開始,初始容量被降低到0.在.NET 1.0中,它是16.我已經更新了我的答案,並且會提升你的答案。 ;) – 2009-10-14 08:45:57
我需要學習一些PowerShell。這非常方便。 – 2009-10-14 08:47:24
ArrayList list = new ArrayList();
size = 0將項添加到arrayList之前,表示沒有項目在那裏。
創建它時ArrayList爲空,因此大小爲零。
除非你堅持使用框架1,否則根本不應該使用ArrayList
類。改爲使用強類型的通用List<T>
類。
試試吧。
int capacity = (new ArrayList()).Capacity;
應該給你初始容量。
ArrayList中開始與大小= 0(因爲它是空的)和容量= 16
容量是根據需要加倍,和能力加倍爲O(n)的操作,其中n是新容量。所以如果你在你的列表中插入5000個元素,那麼框架會將ArrayList容量翻倍9次 - 每次翻倍操作的費用是前一次的兩倍。換句話說 - 如果你知道你將把5,000個元素放在一個列表中,你最好明確地初始化它以容納5,000個元素。
如果您知道您即將插入大量元素,您可以顯式設置現有數組列表的容量。您還可以明確減少容量,但是如果您設置容量<計數,則會得到一個ArgumentOutOfRange異常。
非常好地解釋了 – Quagmire 2009-10-14 08:47:34
雖然每次翻倍操作比前一次貴兩倍,但它發生一半的頻率。這使得每個插入的分攤成本不變,因此總共插入n個元素爲O(n)。是的,如果它的規模很大,你最好先把它分配到合適的尺寸,但即使你不這樣做,總的附加成本也相當小。您忽略的另一項成本是平均而言,該清單浪費了其四分之一的空間容量。 – 2009-10-14 14:24:39
- 1. 爲什麼具有初始大小的ArrayList的大小返回0?
- 2. 初始化ArrayList <ArrayList <Int>>在kotlin中的大小
- 3. ArrayList初始大小不起作用
- 4. C typedef'd數組 - 初始值是什麼?
- 5. 什麼是結構初始化爲C++
- 6. 未初始化列表的大小C#
- 7. 初始化ArrayList和HashMap的最佳方法是什麼?
- 8. 什麼是新創建的數據庫的SQL Server中的初始大小?
- 9. 爲什麼ArrayList的最大數組大小是Integer.MAX_VALUE - 8?
- 10. 初始化大小
- 11. 初始值設定項大於數組大小時的行爲是什麼?
- 12. 爲什麼iPad上的UIScrollView的初始大小仍然爲320?
- 13. 什麼是位集的在C++大小
- 14. 什麼是ADD_ACTION(「初始化
- 15. 什麼是初始化塊?
- 16. 初始大小的BasicDataSource
- 17. 初始化ArrayList
- 18. 初始窗口大小/調整大小
- 19. 爲什麼從xib初始化VC視圖的框架不是MainScreen的大小?
- 20. 使用realloc動態數組大小與初始大小C
- 21. 以最大尺寸初始化ArrayList
- 22. 在C++中初始化結構的語法是什麼?
- 23. 什麼是在C++ 98中初始化Matrix的正確方法?
- 24. c中數組初始化的背景是什麼?
- 25. 在c中初始化指針的正確方法是什麼?
- 26. 什麼是C++中的基礎初始值設定項?
- 27. 什麼是「錯誤:可變大小的對象可能未被初始化」?
- 28. PhoneGap App中的初始屏幕大小
- 29. 爲什麼這個hashmap初始容量試圖調整大小?
- 30. ContentPane在初始化後更改大小 - 爲什麼?
這可能是明顯的,但除非你使用.NET 1.x,否則應該使用List。 –
2009-10-14 08:37:53
你的應用程序不應該依賴於此。如果你知道你有一個元素的上限和性能的問題,用這個限制初始化容器,否則依靠它的自動調整能力。 – 2009-10-14 08:58:59