第十章 集合

今天差一点就直接睡觉去了。冬天实在太冷,总是给自己找好多理由。还好,继续今天的复习。

集合 以前用的也只有那几样,殊不知有很多连概念都不知道。同事说看书没用,我反驳:那是因为你没看。

 

一 列表List<T>

    1.ForEach用法

       racers.ForEach(delegate(Racer r){Console.WriteLine(r.ToString)});

       或者使用λ表达式 racers.ForEach (r=>Console.WriteLine(r.ToString));

     2. 类型转换

         List<Person> persons = racers.ConvertAll<Person>(r=> new Person(r.Firstname+" "+r.Lastname));
     3. 只读集合

         List<T> 的AsReadOnly  方法返回ReadOnlyCollection<T>只读对象。

二 队列 Queue,Queue<T> 先进先出

     Enqueue() 在一端添加元素

     Dequeue() 在另一端删除元素

三 栈 Statck, Statck<t> 先进后出

     Push() 在栈顶添加元素

     Pop()  在栈顶删除元素

四  链表 LinkedList<T> 没有非泛型集合的类似版本

     双向链表,其元素指向前后和后面的元素。

     优点:插入的速度非常快,因为只需要修改插入元素的上一个元素的Next引用和下一个元素的Previous引用。

     缺点: 因为只能一个接一个地访问,所以查找中间或尾部的元素需要较长的时间。

     遗留问题: 书上的Linkedlist demo 没有弄明白

五 有序表

     SortedList<Tkey,TValue>, SortedList 排好序的集合

六 字典 (平时用的最多的)

    注意: 字典的性能取决于GetHashCode()方法

              每当重写 Object的Equals()方法是,系统会给出一个警告提示重写 GetHashCode()。因为如果两个对象相等,则他们必须返回相同的散列码。

    1.Lookup类

      字典每个键支持一个值。而Lookup 的每一个键映射到一个值集上。

      Lookup 不能像一般的字典那样创建,必须调用ToLookup().它返回一个Lookup对象。

     该方法用于实现了IEnumerable<T>的所有类。

     Lookup<string,Racer> lookupRacers=(Lookup<string,Racer>)racers.ToLookup(r=>r.Country)

     foreach(Racer r in lookupRacers["Australia"]) 

    {

       Console.WriteLine(r); 

     }

   2.其他字典类

      有一些非泛型的字段 例如 Hashtable 值和键基于object 等等

      泛型字典优先于基于对象的字典。所以还是多使用泛型字典

      SortedList<TKey,TValue> 实现为一个基于数组的链表

      SortedDictionary<TKey,TValue>  实现为一个字典。

      SortedList使用的内存比SortedDictionary少;

      SortedDictionary的插入删除比较快;

      在用以排好序的数据填充集合时,若不需要修改容量,SortedList 比较快。

七 HashSet 

    这个集合包含不重复项的无序列表。这个类提供的方法可以创建合集和交集。

    Add() 方法返回bool值。如果不存在,添加元素返回true,如果已经存在,返回false

    IsSubsetOf()返回bool值。如果参数传送的集合是集的一个子集。返回true

    IsSupersetOf()返回bool值。如果参数传送的集合是集的一个超集,返回true

    UnionWith() 合并子集。合并后的集合中只包含唯一值。

八 位数组 

    类BitArray 和 结构BitVector32

     BitArray 可以重新设置大小,利用Length属性设置。

     BitVector32 基于栈的,所以速度比较快。仅包含32位,存储在一个整数中。

九 性能

     

   

 

 

posted on 2011-01-18 14:25  小齐宝  阅读(262)  评论(0)    收藏  举报

导航