vargroup = new List<Person> { new Person("001", "AAA"), new Person("002", "BBB"), new Person("003", "CCC")}; Person target; foreach(var person ingroup) { if(person.Id == "003") { target = person; Console.WriteLine($"Person {target.Name} is at {target.Id}"); break; } }
publicclassPerson(string id, string name) { publicstring Id {get; set;} = id; publicstring Name {get; set;} = name; }
vargroup = new Dictionary<string, Person>(); group.Add("001", new Person("AAA")); group.Add("002", new Person("BBB")); group.Add("003", new Person("CCC")); Console.WriteLine(group["003"]);
publicclassPerson(string name) { publicstring Name {get; set;} = name; }
使用Dictionary后为每个人建立键值对,查找时无需遍历就能得到对应的信息。
常用操作
哈希表的各种操作都十分高效,时间复杂度为O(1)
1 2 3 4 5 6 7 8 9 10 11 12 13
// 初始化 vargroup = new Dictionary<string, Person>();
// 向哈希表添加键值对 group.Add("001", new Person("AAA")); group.Add("002", new Person("BBB")); group.Add("003", new Person("CCC"));
// 删除一个键为 002 的键值对 group.Remove("002");
// 获取键为 003 的值 var personC = group["003"];
如果需要遍历哈希表的每一个键/值,也是可以做到的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
// 通过 foreach 遍历哈希表的每一个键值对 foreach(var pair ingroup){ var id = pair.Key; // 获取键 var person = pair.Value; // 获取值 }
// 遍历哈希表的每一个键,在循环体中获取值 foreach(var key ingroup.Keys){ var id = key; // 获取键 var person = group[key]; // 获取值 }
// 遍历哈希表的每一个值 foreach(varvalueingroup.Values){ var person = value; }