gpt4 book ai didi

c# - 当按我搜索的字段排序时,我可以更快地搜索排序的 List 吗?

转载 作者:行者123 更新时间:2023-11-30 15:09:01 25 4
gpt4 key购买 nike

我认为排序 List<T>在我搜索的字段上会使搜索速度更快。假设我有一个 List<Person> 10.000 和一个 List<Car>对象模型中的 10.000 个。我在模型中循环 Persons 列表,并希望找到属性为 c.Owner == person.Name 的 Car。

public static Car Car(Model model, Person person)
{
return model.Cars.Find(
delegate(Car c)
{
return c.Owner.Equals(person.Name);
});
}

根据 property owner 对汽车列表进行排序不会使循环更快?

我想也许我应该使用 BinarySearch但是 BinarySearch 的重载不允许代表。 überhaupt 的用途是什么 BinarySearch什么时候必须将要查找的汽车作为参数?

最佳答案

List<T>.BinarySearch 不接受代表,但它确实an overload接受 IComparer<T> .将该重载与适当的自定义比较器 ( CarByOwnerComparer : IComparer<Car> ) 一起使用,以使其按照您希望的方式进行搜索。当然,请记住,该列表必须已经使用该比较器排序,以允许二进制搜索工作。如果您更喜欢编写委托(delegate)(例如通过 lambda)而不是实现接口(interface),请考虑使用可以在两者之间进行转换的转换器,例如 ProjectionComparer 此处提供。

但是,我建议您改用更合适的集合类,它可以提供快速的按键检索。例如,SortedList<,>SortedDictionary<,>都将在 O(logn) 中完成工作.如果订购不是真正的要求,那么使用 Dictionary<,> 可能会容易得多.

关于c# - 当按我搜索的字段排序时,我可以更快地搜索排序的 List<T> 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4919751/

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