刪除集合中的所有內(nèi)容有許多方法,其中有些非常得迅速。來(lái)看看一個(gè)包含10,000個(gè)項(xiàng)目的集合:
Dim col As New Collection, i As Long
For i = 1 To 10000
col.Add i, CStr(i)
Next
可以從末尾位置為起點(diǎn)刪除集合內(nèi)容,如下:
For i = col.Count To 1 Step -1
col.Remove i
Next
也可以從開(kāi)始位置為起點(diǎn)刪除集合內(nèi)容,如下:
For i = 1 To col.Count Step 1
col.Remove i
Next
試驗(yàn)證明,后者要快于前者百倍多,比如0.06秒比4.1秒。原因在于:當(dāng)引用接近末尾位置的集合項(xiàng)目時(shí),VB必須要從第1個(gè)項(xiàng)目開(kāi)始遍歷整個(gè)的項(xiàng)目鏈。更有趣的是,如果集合項(xiàng)目的數(shù)量加倍,那么從末尾開(kāi)始刪除與從頭開(kāi)始刪除,前者要比后者花費(fèi)的時(shí)間將成倍增長(zhǎng),比如前者是24秒,后者可能為0.12秒這么短!最后提醒您:刪除集合的所有內(nèi)容的最快方法就是“毀滅”它,使用下面的語(yǔ)句: Set col = New Collection
對(duì)于一個(gè)包含20,000個(gè)項(xiàng)目的集合,上述操作僅僅耗時(shí)0.05秒,這比使用最快的循環(huán)操作進(jìn)行刪除也要快2倍左右。
Dim col As New Collection, i As Long
For i = 1 To 10000
col.Add i, CStr(i)
Next
可以從末尾位置為起點(diǎn)刪除集合內(nèi)容,如下:
For i = col.Count To 1 Step -1
col.Remove i
Next
也可以從開(kāi)始位置為起點(diǎn)刪除集合內(nèi)容,如下:
For i = 1 To col.Count Step 1
col.Remove i
Next
試驗(yàn)證明,后者要快于前者百倍多,比如0.06秒比4.1秒。原因在于:當(dāng)引用接近末尾位置的集合項(xiàng)目時(shí),VB必須要從第1個(gè)項(xiàng)目開(kāi)始遍歷整個(gè)的項(xiàng)目鏈。更有趣的是,如果集合項(xiàng)目的數(shù)量加倍,那么從末尾開(kāi)始刪除與從頭開(kāi)始刪除,前者要比后者花費(fèi)的時(shí)間將成倍增長(zhǎng),比如前者是24秒,后者可能為0.12秒這么短!最后提醒您:刪除集合的所有內(nèi)容的最快方法就是“毀滅”它,使用下面的語(yǔ)句: Set col = New Collection
對(duì)于一個(gè)包含20,000個(gè)項(xiàng)目的集合,上述操作僅僅耗時(shí)0.05秒,這比使用最快的循環(huán)操作進(jìn)行刪除也要快2倍左右。

