gpt4 book ai didi

c# - 获取列表索引的列表操作

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

我的 Windows 应用程序中有这样一个类:

public class Pets
{
String Name {get;set;}
int Amount {get;set;}
}

在我的其他类(class)中,我像这样制作了该类(class)的列表。

List<Pets> myPets = new List<Pets>();
myPets.Add(new Pets{ Name = "Fish", Amount = 8});
myPets.Add(new Pets{ Name = "Dogs", Amount = 2});
myPets.Add(new Pets{ Name = "Cats", Amount = 2});

有什么方法可以获取 PetsName = "Fish" 的索引?

我知道我可以做到这一点

int pos = 0;

for(int x = 0; x<myPets.Count;x++)
{
if( myPets[x].Name == "Fish")
{
pos = x;
}
}

但如果我在 myPets 中有很多项目,则需要很长时间才能遍历它们以找到我要找的那个。有没有其他方法可以完成上面的任务。那会让我的应用程序运行得更快吗?如果 myPets 中有很多元素。

最佳答案

如果列表很大,您目前的数据结构方式不适合按宠物名称搜索。

所以像您建议的那样手动迭代,FindIndex 正在做的事情被称为 linear search这是一种蛮力算法。如果您的集合中有 N 项,找到一项的最坏情况是 N 次迭代。使用大 O 表示法,这称为 O(N)。搜索速度随着您收藏中的项目数量线性增长。

为了更快地搜索,您需要更改为不同的数据结构(如哈希表)、使用数据库或实现不同的搜索算法,例如 binary search (O(log(n)) 复杂度)。

以这个问题为例: Can LINQ use binary search when the collection is ordered?

关于c# - 获取列表索引的列表操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18820845/

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