gpt4 book ai didi

C# 列表排序与插入

转载 作者:太空宇宙 更新时间:2023-11-03 23:31:41 24 4
gpt4 key购买 nike

我有一个对象列表,我在整个代码中以及当用户与程序交互时对这些对象进行多次排序。我想知道将新项目插入列表而不是添加到列表末尾并重新计算整个列表是否会更好。

下面的代码用于导入浏览器书签 - 这里我将一堆书签添加到列表 (this._MyLinks) 中,它们是链接对象,然后对最终列表进行排序 - 我认为这可能是给定场景中最好的。 ..

    public void ImportBookmarks(string importFile)
{
using (var file = File.OpenRead(importFile))
{
var reader = new NetscapeBookmarksReader();
var bookmarks = reader.Read(file);
foreach (var b in bookmarks.AllLinks)
{
bool duplicate = this._MyLinks.Any(link => link._URL == b.Url);
if(duplicate)
{
continue;
}
Link bookmark = new Link();
bookmark._URL = b.Url;
bookmark._SiteName = b.Title;
bookmark.BrowserPath = "";
bookmark.BrowserName = "";

if (bookmark.AddToConfig(true))
{
this._MyLinks.Add(bookmark);
}

}
}
this._MyLinks = this._MyLinks.OrderBy(o => o._SiteName).ToList();
}

现在用户还可以选择添加自己的链接(一次一个)。每当用户添加链接时,整个列表都会使用

再次排序
this._MyLinks = this._MyLinks.OrderBy(o => o._SiteName).ToList();

从性能的角度(或一般而言)将项目直接插入指定位置是否更好?如果是这样,您能给我一些建议吗?

谢谢!

最佳答案

既然你想要一组排序的数据,你应该使用更合适的数据结构,特别是排序的数据结构,而不是使用你每次都重新排序的未排序的数据结构,或者迫使你低效地添加项目到列表的中间。

SortedSet 专门设计用于有效地维护一组已排序的数据。

关于C# 列表排序与插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31991175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com