【发布时间】:2011-10-29 12:15:54
【问题描述】:
我有两个字符串类型的通用列表,第一个包含大约 1,000,000 个术语,第二个包含大约 100,000 个关键字。第一个列表中的术语可能包含也可能不包含第二个列表中的关键字。我需要从第二个列表中分离出第一个列表中不包含任何关键字的术语。 目前我正在这样做(VB.NET with framework 3.5):
For Each keyword In keywordList
termList.RemoveAll(AddressOf ContainsKeyword)
Next
Private Shared Function ContainsKeyword(ByVal X As String) As Integer
If X.IndexOf(keyword) >= 0 Then
Return True
Else
Return False
End If
End Function
不用说,这需要很长时间。最快的方法是什么?也许使用字典?任何提示都会有所帮助
【问题讨论】:
-
一方面,如果你只是检查一个字符串是否包含某个子字符串,那么使用
String.Contains方法而不是String.IndexOf。 -
我刚刚检查了 Dictionary 类,虽然我可以轻松地从每个术语创建一个键/值对,但问题是我必须有重复键,这不好