脑子不转了,请大家帮助arrayList 删除的问题
Dim arr As New ArrayList
arr.Add("aaaa")
arr.Add("bbb")
arr.Add("ccc")
Try
Dim cou As Integer = arr.Count - 1
For k = 0 To cou
Try
Dim s As String = arr.Item(k)
If s = "bbb" Then
arr.Remove(s)
‘请问再加什么才是正确的??
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
[解决办法]
[解决办法]
移除完了就完了?你还想。移除完后就剩下 aaaa ccc了
详细参考http://www.2cto.com/kf/201007/52859.html
[解决办法]
一定要这么写的话:
k-=1……
你删掉一个元素之后,后面的元素就前移了,这时索引不能增长,不然就跳过了一个元素
这样有个缺点,就是循环的终止值不确定。你不知道最后容器会剩下多少元素,必须实时读取容器的长度。
你这里看起来是用Try...Catch捕获IndexOutOfRangeException来回避这个问题……
还有就是,每删一个元素,后面的元素就往前移动一次,如果元素很多,移动元素消耗的时间会非常多。
所以一般是扫描容器,把需要保留的元素移动到容器前端,然后清空后面多出来空间。
如果元素少,觉得这么做麻烦的话可以从后往前删,for k=cou to 0,不过元素多的话还是得用上面那种方法。
说了那么多,实际上用List<T>的RemoveAll就可以满足需求了。
[解决办法]
应该说是“元素多,需要删除的元素也比较多”才准确
如果只是元素多,需要删除的元素只有一个的话没什么区别,都要移动一次。
[解决办法]
报的是下标越界的错么?如果只删除"bbb"的话,删除之后就可以退出FOR了啊
If s = "bbb" Then
arr.Remove(s)
Exit For
End If
[解决办法]
For k = cou to 0 Step -1
................
[解决办法]
删除之后,arr.count已经变了,千万要注意这一点
[解决办法]
- VB.NET code
Dim arr As New ArrayList Dim s As String = "ccc" arr.Add("aaa") arr.Add("bbb") arr.Add("ccc") For i As Integer = 0 To arr.Count - 1 If s = arr(i) Then arr.Remove(arr.Item(i)) Exit For End If Next For j As Integer = 0 To arr.Count - 1 Console.WriteLine(arr(j)) Next Console.ReadLine()
[解决办法]
[解决办法]
不要在for循环里 边循环边删除
可以先循环出 要删除的 index,最后统一删除
[解决办法]
新建1个list
循环原来list 把要删除的 add到新的list
循环新的list 根据新的list删除原来的list
[解决办法]
像这样的情况也还可以倒着来!
[解决办法]
呵呵 我说的第一点 就是 第三点 只是第一次没说清楚, 那个第一点是错的 删除1个 index就改了 不能用于删除第二个
[解决办法]
呵呵,倒着来是最简单的解决办法,不会报下标越界
也不用退出for语句