码迷,mamicode.com
首页 > 编程语言 > 详细

C#语言基础-11 字典/集/有序集合/不变的集合

时间:2020-04-04 22:59:23      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:pre   验证   contains   creat   序列   个数   转换   mamicode   system   

 字典 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个元素

 

C#语言基础-11 字典/集/有序集合/不变的集合

标签:pre   验证   contains   creat   序列   个数   转换   mamicode   system   

原文地址:https://www.cnblogs.com/liuxiansheng1024/p/12632389.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!