2015-12-17 67 views
-2

例如。尋找能夠找到最近鄰居的排序C#集合

ISortedMagicCollection<string> collecton = new SortedMagicCollection<string>(); 

    collection.Add("AAA"); 
    collection.Add("CCC"); 
    collection.Add("BBB"); 
    collection.Add("XXX"); 
    collection.Add("DDD"); 

    var points = collection.FindPrevious("BBB").Take(3).ToList(); 

    points[0] == "AAA"; // true; 
    points[1] == "BBB"; // true; 
    points[2] == "CCC"; // true; 

總之,該列表應該總是排序,應該很容易找到最近的鄰居到任何特定的項目。

請注意,該列表是動態的。項目一直在添加和刪除。

+0

可以使用'排序列表<字符串,字符串>'。然後通過改變索引找到密鑰的索引並得到下一個/前一個密鑰。問題是什麼?同步?是一個簡單的'鎖'太貴了一段時間得到鄰居?也許'SortedSet <>'也會。 – Sinatr

+0

SortedList的插入刪除性能差,因爲它使用線性數組來存儲所有節點。 – bradgonesurfing

+1

然後使用雙向鏈表並通過二分查找找到插入點等? –

回答