C# 列表操作获取列表';s指数

C# 列表操作获取列表';s指数,c#,windows-8,collections,C#,Windows 8,Collections,我的Windows应用程序中有这样一个类: public class Pets { String Name {get;set;} int Amount {get;set;} } 在我的另一门课上,我把那门课列了一张这样的清单 List<Pets> myPets = new List<Pets>(); myPets.Add(new Pets{ Name = "Fish", Amount = 8}); myPets.Add(new Pets{ Name = "Dog

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

public class Pets
{
  String Name {get;set;}
  int Amount {get;set;}
}
在我的另一门课上,我把那门课列了一张这样的清单

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});

但是,如果我在
myPets
中有很多项目,则需要很长时间才能找到我正在寻找的项目。是否有其他方法完成上述任务。那会让我的应用程序运行得更快吗?如果
myPets
中有很多项。

如果只想查找索引以访问列表项,可以使用字典

var pets = new Dictionary<string, int>();
pets.Add("Dogs", 2);
pets.Add("Fish", 8);
int amount = pets["Fish"];
var-pets=newdictionary();
添加(“狗”,2);
添加(“鱼”,8);
整数金额=宠物[“鱼”];

如果列表很大,那么当前数据的结构化方式不适合按宠物的名字进行搜索

因此,像您建议的那样手动迭代,
FindIndex
所做的就是所谓的a,这是一种蛮力算法。如果集合中有N个项目,则查找项目的最坏情况是N次迭代。使用大O表示法称为O(N)。搜索速度随收藏中的项目数线性增长

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

以这个问题为例:

什么是真正的任务:获取其
Name=“Fish”
的元素的索引或获取元素本身?@nsinreal获取元素的索引。@user2716979使用其键检索值非常快,接近O(1),因为
字典
类是作为哈希表实现的。有很多。我会用这个。
var pets = new Dictionary<string, int>();
pets.Add("Dogs", 2);
pets.Add("Fish", 8);
int amount = pets["Fish"];