c# 排序设置如何获取元素

本文关键字:获取 元素 何获取 排序 设置 | 更新日期: 2023-09-27 18:36:50

我是新手,所以请原谅我的菜鸟。

如果我发现 c# sortedset 中的项目存在,我正在尝试编辑该项目。 所以我可以使用list.contains(value)并发现该值确实存在于列表中。 但是我如何从列表中删除该项目。 这是我所拥有的。 随着我的列表大小变得非常大,这变得非常慢,所以我猜一定有比这更好的方法。

if (list.Contains(p))
{
     Person exists = list.First(person => person.Name.Equals(line[0]));
     // do something here to exists
}
else
{
    // just add the person to the list
}

c# 排序设置如何获取元素

从.NET Framework 4.7.2开始,TryGetValue方法可用于SortedSet。

对于早于 4.7.2 版本的 .NET 框架:

无法

SortedSetHashSet集合中获取元素(使用 Contains 方法或其他方法)。人们可以知道集合是否包含该元素。由于为了在集合中找到此元素,已经使用此元素(将其传递给 Contains 方法),因此可以假设已经具有此元素。

对于从版本 4.7.2 开始的 .NET 框架:

看到这个答案。

你真的需要SortedSet哪棵是红黑树吗?如果不需要排序,则不应使用它。您是否考虑过HashSetDictionary哪个更适合(快速)按键获取物品?

在您的情况下,您可能需要创建Dictionary键等于人名的实例,即:

Dictionary<string, Person> list;

然后你可以通过它的名字得到人,复杂度是O(1)

if(list.ContainsKey(line[0]))
{
    list[line[0]]...
}

甚至更好:

Person p;
if(list.TryGetValue(line[0], out p))
{
    p...
)

您可能需要考虑使用 PowerCollections 项目 — 它对标准泛型集合进行了许多有用的改进。