Bil*_*oks 3 c# list sortedlist data-structures
我需要实现一个大的Widget对象集合,每个对象都包含一个唯一的文件路径字符串("FilePath").我需要能够做到以下几点:
我首先想到使用文件路径作为键来使用通用的SortedList,但是复制数千个对象的路径可能会很快占用内存.我考虑从对象中删除路径并仅将其存储在密钥列表中,但这会使上面的要求3难以实现.
我现在倾向于滚动从List <>派生的我自己的类,它按排序顺序添加Widget对象,并使用二进制搜索检索它们.只需从列表中删除一个对象,更改它的文件路径,然后将其添加回列表,即可完成要求2.
但我对C#比较陌生,我想在这里检查一下好心人,看看我是否错过了另一个明显的解决方案.
谢谢!
你不能使用2个dictionarys吗?
Dictionary<string, Widget> WidgetsByPath;
Dictionary<Widget, string> PathsByWidget;
Run Code Online (Sandbox Code Playgroud)
处理会有一些额外的开销(因为你需要在插入,修改或删除元素时更新两个字典),但你可能只会插入一次多次查找,所以应该这样做.
你甚至可以围绕它构建一个简单的类:
public class Widgets
{
public Widget Add(string Path, Widget wdg)
{
// Chek it doesn't already exits and all...
WidgetsByPath.Add(Path, wdg);
PathsByWidget.Add(wdg, Path);
}
public void Delete(string Path)
{
Widget w = WidgetsByPath[Path];
PathsByWidget.Delete(w);
WidgetsByPath.Delete(Path);
}
}
Run Code Online (Sandbox Code Playgroud)