gpt4 book ai didi

.net - 如何尽快删除 SortedDictionary 的第二个元素?

转载 作者:行者123 更新时间:2023-12-04 18:50:45 24 4
gpt4 key购买 nike

我必须尽快从 SortedDictionary 中删除第二个元素。字典 ( SortedDictionary<string, List<string>> ) 最多可以包含 20'000 个元素。所以我想出了这个解决方案:

try
{
int loop = 0;
while (true)
{
Routes.Remove(Routes.ElementAt(loop).Key);
loop++;
}
}
catch
{
}

有比这更简单/更好的解决方案吗?
捕获的异常会对性能有影响吗?

编辑:这似乎是一个更好的解决方案(见下面的评论):
SortedDictionary<string, List<string>> resizedRoutes = new SortedDictionary<string, List<string>>();
bool b = true;
foreach(KeyValuePair<string, List<string>> route in Routes)
{
if(b)
{
resizedRoutes.Add(route.Key, route.Value);
b = false;
}
else
{
b = true;
}
}
Routes = resizedRoutes;

如果您有更好的解决方案,请编辑/评论。谢谢。

最佳答案

我对此表示怀疑,因为您要么需要:

  • 移除元素,导致树重新平衡
  • 将项目添加到新树中,导致新树重新平衡

  • 您无法真正避免它,但仅遍历它们并将它们放入 SortedList 可能会更有效。如果您不会经常修改数据。

    是的:
    遍历项目,然后将每个其他项目添加到新树中,而不是修改当前树。这样您就可以避免调用 ElementAt 的费用。每次,在理想的实现中至少是对数, 线性 使用 LINQ(这是 可怕的 ,因为 LINQ 不知道你的树的实现)。
    至于异常(exception):是的,它会对性能产生影响。但我不知道这与你正在做的事情有多大关系,所以它可能很重要,也可能不重要。
    但无论哪种方式, 你不应该忽略异常 . :)
    当你在它的时候:
    可能想看看函数式编程。 :)

    关于.net - 如何尽快删除 SortedDictionary 的第二个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6604781/

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