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