如何快速将新项添加到现有数组中?
Dim arr As Integer() = {1, 2, 3}
Dim newItem As Integer = 4
我已经知道,当处理动态项目列表时,应该使用List
,ArrayList
或类似的IEnumerables
。但如果你被困在使用数组的旧代码中怎么办?
到目前为止,我尝试过:
' A) converting to List, add item and convert back
Dim list As List(Of Integer)(arr)
list.Add(newItem)
arr = list.ToArray()
' --> duration for adding 100.000 items: 33270 msec
' B) redim array and add item
ReDim Preserve arr(arr.Length)
arr(arr.Length - 1) = newItem
' --> duration for adding 100.000 items: 9237 msec
' C) using Array.Resize
Array.Resize(arr, arr.Length + 1)
arr(arr.Length - 1) = newItem
' --> duration for adding 100.000 items: 1 msec
' --> duration for adding 100.000.000 items: 1168 msec
A)因为每次添加一个项目都要进行整个数组的两次转换,所以速度非常慢。B)似乎更快了,但仍然在ReDim Preserve
期间复制了一次数组。C)目前看来似乎是最快的。还有更好的方法吗?