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
}
从.NET Framework 4.7.2开始,TryGetValue方法可用于SortedSet。
对于早于 4.7.2 版本的 .NET 框架:
无法从SortedSet
或HashSet
集合中获取元素(使用 Contains
方法或其他方法)。人们可以知道集合是否包含该元素。由于为了在集合中找到此元素,已经使用此元素(将其传递给 Contains
方法),因此可以假设已经具有此元素。
对于从版本 4.7.2 开始的 .NET 框架:
看到这个答案。
你真的需要SortedSet
哪棵是红黑树吗?如果不需要排序,则不应使用它。您是否考虑过HashSet
或Dictionary
哪个更适合(快速)按键获取物品?
在您的情况下,您可能需要创建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 项目 — 它对标准泛型集合进行了许多有用的改进。