字典 Dictionary<TKey,TValue>
字典允许按照某个键来访问元素。字典也称为映射或散列表。
字典的主要特性是能根据键快速查找值。添加到字典中的键会转换为一个散列,利用散列创建一个数字,它将索引和值关联起来。
Person p1 = new Person(); p1.Age = 1; Dictionary<string,Person> dic = new Dictionary<string, Person>(); Dictionary<string, Person> dic1 = new Dictionary<string, Person>(10);//指定元素数量的初始化 Dictionary<string, Person> dic2 = new Dictionary<string, Person>(dic);//指定元素的初始化 dic.Add("Liu", p1);//添加元素 dic["Liu1"] = p1;//添加元素 bool isOk = dic.ContainsKey("Liu");//验证key是否存在 isOk = dic.ContainsValue(p1);//验证value是否存在 Person p10 = dic["Liu2"];//获取数据 Key必须在字典中存在,否则抛出异常
集 HashSet<T> SortSet<T>
包含不重复元素的集合称为集。HashSet<T>包含不重复元素的无序列表,SortSet<T>包含不重复元素的有序列表。
提供的方法可以创建合集、交集,或者给出一个集是另一个集的超集或子集的信息。
Person p1 = new Person(); p1.Age = 1; Person p2 = new Person(); p2.Age = 12; Person p3 = new Person(); p3.Age = 12; List<Person> ls = new List<Person>() { p1 }; HashSet<Person> hs = new HashSet<Person>(); HashSet<Person> hs1 = new HashSet<Person>(hs); HashSet<Person> hs2 = new HashSet<Person>(ls); bool isOk = hs.Add(p1);//添加元素,如果集中没有,添加到集中并返回ture,否则返回false。 isOk = hs.Add(p1); //返回 false,因为已经添加过 hs.Remove(p1);//删除元素 isOk = hs.IsSubsetOf(hs1);//验证hs是否是hs2的子集 isOk = hs.IsSupersetOf(hs1);//验证hs是否是hs2的超集 hs.UnionWith(hs1);//合集。保留两个集合中的全部数据,重复的保留1份 hs.IntersectWith(hs1);//并集。保留两个集合中都存在的数据 hs.ExceptWith(hs1);//移除交集。移除指定集合中的数据
有序列表 SortList<TKey,TValue>
需要基于键对所需集合排序,使用SortList<TKey,TValue>类。
SortList<TKey,TValue>每个键只允许对应一个值,如果想对应多个值,使用LookUp<TKey,TElement>类。
Person p1 = new Person(); p1.Age = 1; SortedList<string, Person> sl = new SortedList<string, Person>(10); sl.Add("Liu",p1);//添加 sl.Remove("Liu");//删除 sl.IndexOfKey("Liu");//获取索引
不变的集合 ImmutableArray<T>
如果对象可以改变状态,就很难再多个同时运行的任务中使用。如果对象不能改变其状态,就很容易在多线程中使用。不能改变的对象称为不变的对象。
NET 4.5中新增的System.Coolections.Immutable可以创建不能改变的集合类。
Person p1 = new Person(); p1.Age = 1; ImmutableArray<Person> ia = ImmutableArray.Create<Person>(); ImmutableArray<Person> ia1 = ia.Add(p1);//添加元素返回新的不变集合,原来的不修改 ia是个空,ia1包含1个元素
原文地址:https://www.cnblogs.com/liuxiansheng1024/p/12632389.html
时间: 2024-10-12 17:01:17