有这样的情况。有两个列表:list1
asList(of Integer)
和list2
as List(of Integer)
。
我需要删除与 list2 相同的 list1 的所有项目。
例如:
list1 = 0, 1, 2, 3, 6, 10
list2 = 3, 6
从 list1 中删除 list2 后:list1 = 0, 1, 2, 10
。
list1.RemoveAll(Function(i) list2.Contains(i))
或只是与代表
list1.RemoveAll(AddressOf list2.Contains)
正如 Meta-Knight 所指出的, iflist2
只是一个不能包含重复项的查找列表,您最好使用 aHashSet(Of Int32)
代替。它有一个O(1)
查找复杂性,它与它的大小无关,如果你还需要,它的缺点是需要更多内存list2
。
您可以轻松创建一个:
Dim setOfNums = new HashSet(Of Int32)(list2)
list1.RemoveAll(AddressOf setOfNums.Contains)
list1 = list1.Except(list2).ToList();