C# 列表操作获取列表';s指数
我的Windows应用程序中有这样一个类: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
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"];