搜索列表对象
我有一个清单:
Dim list As New List(Of String)
包含以下项目:
290-7-11
1255-7-12
222-7-11
290-7-13
有什么简单快捷的方法可以搜索“第一个块”加“-”加“第二个块”的重复项是否已在列表中。 例如,项目 290-7 出现两次:290-7-11 和 290-7-13。
我正在使用.net 2.0
I have a list:
Dim list As New List(Of String)
with the following items:
290-7-11
1255-7-12
222-7-11
290-7-13
What's an easy and fast way to search if duplicate of "first block" plus "-" plus "second block" is already in the list. Example the item 290-7 appears twice, 290-7-11 and 290-7-13.
I am using .net 2.0
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您只想知道是否有重复但不关心它们是什么...
最简单的方法(假设恰好有两个破折号)。
最快的方法(至少对于大量字符串来说)。
如果存在超过两个破折号的情况,请使用以下内容。 这仍然会因一次破折号而失败。
在 .NET 2.0 中,使用
Dictionary
而不是HashSet
。如果您不关心可读性和速度,请使用数组而不是列表,并且您是正则表达式的真正粉丝,您也可以执行以下操作。
If you only want to know if there are duplicates but don't care what they are...
The easiest way (assuming exactly two dashes).
The fastest way (at least for large sets of strings).
If there are cases with more than two dashes, use the following. This will still fail with a single dash.
In .NET 2.0 use
Dictionary<TKey, TValue>
instead ofHashSet<T>
.If you don't care about readability and speed, use an array instead of a list, and you are a real fan of regular expressions, you can do the following, too.
您想阻止用户添加它吗?
如果是这样,则可以使用将键作为第一个块第二个块的哈希表。
如果没有,LINQ 是不错的选择。
但是,它必须遍历列表进行检查。
这个列表可以有多大?
编辑:我不知道 HashTable 是否有通用版本。
您还可以使用可以接受通用参数的 SortedDictionary。
Do you want to stop user from adding it?
If so, a HashTable with the key as first block-second block could be of use.
If not, LINQ is the way to go.
But, it will have to traverse the list to check.
How big can this list be?
EDIT: I don't know if HashTable has generic version.
You could also use SortedDictionary which can take generic arguments.
如果您的列表仅包含字符串,那么您可以简单地创建一个方法来获取您想要与列表一起查找的字符串:
如果您的数字在程序中具有特殊意义,请不要害怕使用类来表示它们而不是坚持使用字符串。 然后您将有一个地方可以为所述数字编写您想要的所有自定义功能。
If you're list contains only strings, then you can simply make a method that takes the string you want to find along with the list:
If you're numbers have a special significance in your program, don't be afraid to use a class to represent them instead of sticking with strings. Then you would have a place to write all the custom functionality you want for said numbers.