gpt4 book ai didi

c# - List 包含

转载 作者:行者123 更新时间:2023-11-30 19:43:00 26 4
gpt4 key购买 nike

检查列表中是否存在一个条目的最快方法(编码方式)是什么?MyObject 有 2 个属性

public class Name
{
public string FirstName{ get; set; }
public string LastName { get; set; }
}

然后我有另一个这样的类:

public class Foo
{
private List<Name> Names : new List<Name>();
public List<Name> Names { get; set; }

public bool Contains(Name x)
{
if (x == null)
return false;

>>> Navigate || Equals || Linq.Contains
>>> What's the easiest way to do this?
}
}

最佳答案

List 最快的是 O(n)查找速度和 O(1)插入速度:

至少一个

Names.Any(n=> x.FirstName == n.FirstName && x.LastName == n.LastName)

正好一个:

Names.Count(n=> x.FirstName == n.FirstName && x.LastName == n.LastName) == 1

Any() 更快,因为它在找到 Name 的第一个实例时会短路。 Count 每次都会搜索列表以查找 Name 的所有实例。

相反,您可以使用Collection(例如HashSetDictionary 等),其中查找操作为O(1)。 .但是,集合不具有与列表相同的属性。注意,Hashset<string>其中名称存储为 FirstName + (delimeter) + LastName比您拥有的任何其他选项都快。

您还可以使用 SortedList,其中查找速度为 O(log(n)) .但是,在排序列表中插入元素是 O(nlog(n))因为您必须在每次插入后保持列表排序。

关于c# - List<MyObject> 包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16291590/

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