簡體   English   中英

在列表中查找項目的最快方法?

[英]Fastest way to find an item in a list?

我有一個未排序的字符串列表。 我可以將這些項目放在一個數組中,List、SortedList 等等。

我需要找到在此列表中查找字符串的最快方法。 我最好將列表轉儲到數組中,對其進行排序,然后實現二分查找嗎? 或者框架是否提供了一種方法來做到這一點?

謝謝

PS 使用 VS2008 對抗 .NET 2.0

如果您的目標只是快速查找集合中的字符串,請將它們放入HashSet 中

HashSet.Contains是一個 O(1) 方法,字符串默認有很好的哈希算法,所以很難做出比這更快的例程。


編輯:

由於您使用的是 .NET 2,我只會執行Dictionary<string,string>並使用相同的字符串作為鍵和值。 Dictinoary<TKey,TValue>.Contains也是 O(1),並且比您嘗試的任何基於列表的搜索都要快得多。

如果您一次只需要找到一個對象,只需從頭開始,逐個查看,直到找到為止。 如果您必須針對同一個列表多次重復此 Find 操作,以找到不同的項目,然后對其進行排序,保留已排序的列表並進行二分搜索...

我不確定這對您是否有用,但這將是一種相當簡單的方法,但不確定它的確切“速度”。

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

collection.Sort();

foreach(string value in collection)
{
   if(value == "stringToLookFor")
   {
       return value;
   }
{

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM