Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在列表中查找项目的最快方法?_C#_Visual Studio 2008_Search_.net 2.0_Lookup - Fatal编程技术网

C# 在列表中查找项目的最快方法?

C# 在列表中查找项目的最快方法?,c#,visual-studio-2008,search,.net-2.0,lookup,C#,Visual Studio 2008,Search,.net 2.0,Lookup,我有一个未排序的字符串列表。我可以将这些项目放入数组、列表、分类列表等任何形式 我需要找到在列表中查找字符串的最快方法。我是否最好将列表转储到数组中,对其进行排序,然后实现二进制搜索?还是框架提供了一种实现这一点的方法 谢谢 附带说明:使用VS2008对抗.NET 2.0如果您的目标只是快速查找集合中的字符串,请将它们放入一个文件夹中 是一个O(1)方法,默认情况下字符串有一个好的哈希算法,因此很难生成比这个更快的例程 编辑: 因为您使用的是.NET2,所以我只需要使用字典,并对键和值使用相同

我有一个未排序的字符串列表。我可以将这些项目放入数组、列表、分类列表等任何形式

我需要找到在列表中查找字符串的最快方法。我是否最好将列表转储到数组中,对其进行排序,然后实现二进制搜索?还是框架提供了一种实现这一点的方法

谢谢


附带说明:使用VS2008对抗.NET 2.0如果您的目标只是快速查找集合中的字符串,请将它们放入一个文件夹中

是一个O(1)方法,默认情况下字符串有一个好的哈希算法,因此很难生成比这个更快的例程


编辑:


因为您使用的是.NET2,所以我只需要使用
字典
,并对键和值使用相同的字符串<代码>词汇表.Contains也是O(1),比您尝试的任何基于列表的搜索都要快得多。

如果您只需查找一个对象,一次只需从开始处开始,查看每个对象,直到找到为止。如果您必须对同一个列表多次重复此查找操作,以查找不同的项,然后对其进行排序,请保留已排序的列表并进行二进制搜索

我不确定这对你是否有用,但这是一种相当简单的方法,但不确定它的确切“速度”

List<string> collection = new List<string>();

collection.Sort();

foreach(string value in collection)
{
   if(value == "stringToLookFor")
   {
       return value;
   }
{
列表集合=新列表();
collection.Sort();
foreach(集合中的字符串值)
{
如果(值=“stringToLookFor”)
{
返回值;
}
{

我道歉-我更新了标记。我正在使用VS2008与.NET 2.0一起使用-哈希集不可用。是否.NET真的没有与哈希集等价的东西?.NET现在有一个哈希集。它在2.0.+1中没有。当我读到这个问题时,我解释“查找”的意思不仅仅是确定给定字符串是否“存在”在集合中:)不再使用.NET 2.0,但绝对不会想到以您建议的方式使用字典。谢谢,如果您要循环使用它,为什么要对它进行排序?这可能是搜索列表最慢的方法。如果您对它进行排序,您可以进行二进制搜索,这将比在键中搜索快得多,但仍然慢得多/基于值的集合。我只是假设排序搜索比随机查找字符串更快,特别是如果它位于列表的开头。这只是一个建议,决不是唯一的解决方案。