zoukankan      html  css  js  c++  java
  • 非泛型集合和泛型集合

    ArrayList

    1、命名空间: 

     System.Collections
    2、描述:
      1)、表示可通过索引访问的对象的强类型列表;提供用于对列表进行搜索、排序和操作的方法。
      2)、是ArrayList类的泛型等效类。
      3)、可以使用一个整数索引访问此集合中的元素;索引从 零 开始。
      4)、可以接收null空引用。
      5)、允许重复元素

    3、Capacity与Count
      1)Capacity在需要调整大小之前可存储的元素数;Count实际存储的元素数。
      2)Capacity总是大于或者等于Count
      通过Reflector查看add()方法对Capacity和Count的影响:

    4、遍历元素:
      foreach (string s in myList)
      {
          Console.WriteLine(" 值: {0}", s);
      }
    5、ArrayList常用属性和方法:

      Add(Object value)将对象添加到ArrayList的结尾处。并且返回值 为int。

      Remove(Object value)将指定的元素删除,并且一次只删除一个。

      RemoveAt(int index)将指定元素下标的值删除。

      Insert(int index,Object Value)将指定的元素添加到指定的下标。

      Contains(Object Value)判断指定的元素是否存在集合中,布尔返回值。

      Clear()删除集合中的所有元素

    Hashtable

    1.命名空间

    System.Collections

    2.名称

    哈希表(Hashtable)

    3.描述

    用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写;

    value用于存储对应于key的值。

    Hashtable中keyvalue键值对均为object类型,所以Hashtable可以支持任何类型的keyvalue键值对.

    不能通过下标访问数据,双列集合是通过键访问值的。

    4.Hashtable的常用属性和方法

    Count   :获取键值对的数目

    keys:键的集合

    Values:值的集合

    Add(Object key,Object Value):将指定的键和值的元素添加到集合中。

    Remove(Object Key):移除带有指定键的元素

    Clear():移除所有元素

    5.遍历哈希表中的值

    Hashtable只能用foreach遍历集合中的数据。

    eg:

    foreach(Object obj in ht.Values)

    {

    //遍历值

    cw(se.Name);

    }

    或者

    foreach(string key in ht.Keys)

    {

    //将键值对全部遍历出来

    cw(ht[key]);

    }

    6 .对哈希表进行排序

      对哈希表按key值重新排列的做法:

    ArrayList akeys=new ArrayList(ht.Keys); 
    akeys.Sort(); //按字母顺序进行排序
    foreach(string key in akeys)
    {
       Console.WriteLine(key + ": " + ht[key]);  //排序后输出
    }
    
    

    泛型集合

     泛型是C#2.0的一个新特性。泛型引入一个概念:类型参数。是一个数据类型,可以是类类型,基本数据类型。通过使用<T>类型参数

     1.减少装箱和类型强转时的风险。

    2.通过泛型可以最大限度的重用代码,保护类型的安全及提高性能,最常用的就是创建集合类,可以约束集合类中的元素类型。

    List<T>

    1、命名空间: 

     System.Collections.Generic(程序集:mscorlib)
    2、描述:
      1)、表示可通过索引访问的对象的强类型列表;提供用于对列表进行搜索、排序和操作的方法。
      2)、是ArrayList类的泛型等效类。
      3)、可以使用一个整数索引访问此集合中的元素;索引从 零 开始。
      4)、可以接收null空引用。
      5)、允许重复元素
    3、创建及初始化:
      List<string> myList = new List<string>();//初始Capacity为 零
      List<string> myList2 = new List<string>(30); //初始Capacity为 30
      List<string> myList3 = new List<string>(new string[] { "1", "a", "2", "b" });//初始Capacity 为 4,并且元素已被复制
    4、Capacity与Count
      1)Capacity在需要调整大小之前可存储的元素数;Count实际存储的元素数。
      2)Capacity总是大于或者等于Count
      通过Reflector查看add()方法对Capacity和Count的影响:

    5、遍历元素:
      foreach (string s in myList)
      {
          Console.WriteLine(" 值: {0}", s);
      }
    6、ArrayList常用属性和方法:

      Add(Object value)将对象添加到ArrayList的结尾处。并且返回值 为int。

      Remove(Object value)将指定的元素删除,并且一次只删除一个。

      RemoveAt(int index)将指定元素下标的值删除。

      Insert(int index,Object Value)将指定的元素添加到指定的下标。

      Contains(Object Value)判断指定的元素是否存在集合中,布尔返回值。

      Clear()删除集合中的所有元素

      集合初始化器:就是更简单的方法对集合中的元素赋值。

      

    eg:
    
      ArrayList list = new ArrayList();
    
      {
    
       new Book(){BookName="越狱"}//每一项用逗号隔开,最后一项不用逗号
    
      ,new Book(){BookName="爱情"}
    
      ,new Book(){BookName="故事"}
    
      ...
    
      };

    Dictionary<K,V>

    1.命名空间

    System.Collections.Generic(程序集:mscorlib)

    2.描述

    用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写;

    value用于存储对应于key的值。

    Dictionary中key,value键值对均为object类型,所以Dictionary可以支持任何类型的keyvalue键值对.

    不能通过下标访问数据,双列集合是通过键访问值的。

    4.Dictionary的常用属性和方法

    Count   :获取键值对的数目

    keys:键的集合

    Values:值的集合

    Add(Object key,Object Value):将指定的键和值的元素添加到集合中。

    Remove(Object Key):移除带有指定键的元素

    Clear():移除所有元素

    5.遍历Dictionary中的值

    Dictionary只能用foreach遍历集合中的数据。

    eg:
    
    foreach(Object obj in ht.Values)
    
    {
    
    //遍历值
    
    cw(obj .Name);
    
    }
    
    或者
    
    foreachstring key in ht.Keys)
    
    {
    
    //将键值对全部遍历出来
    
    cw(ht[key]);
    
    }
    
    foreach(keyvaluepair<string,se> item in ht)
    
    {
    
    //将键值对全部遍历出来
    
    cw(ht[key]);
    cw(ht.value.name);
    
    }

     四.泛型和非泛型集合的区别

    List<T>与ArrayList的区别

     相同点:

    1.通过索引访问集合中的元素。

    2.添加元素方法相同。Add(Object Value)

     3.删除元素方法相同。RemoveAt(int index)或Remove(Object Value)

    不同点:

    List<T>:对保存元素进行类型约束。

    ArrayList:可以增加任何类型。

    List<T>:添加/读取值类型不用进行装箱,拆箱操作。

    ArrayList:添加/读取值类型需要进行装箱,拆箱操作。

    Dictionary<k.v>和Hashtable的对比

    相同点:

    1.都通过Key获取Value

    2.添加元素方法相同Add(Object Key,Object Value)

    3.删除元素方法相同 Remove(Object Value)

    4.遍历方法相同foreach

    不同点:

    Dictionary<k.v>:对保存元素进行类型约束。

     Hashtable:可以增加任何类型

    Dictionary<k.v>:添加/读取值类型元素无须装箱,拆箱。

     Hashtable::添加/读取值类型元素需要拆箱,装箱。

  • 相关阅读:
    Markdown的简介(转)
    写在二月的尾巴上
    The Pragmatic Programmer 读书笔记
    C/C++语言的一些精简归纳
    一般常用设计模式及原则的思想小结
    常用UML模型简要小结
    LeetCode 101. Symmetric Tree
    LeetCode 100. Same Tree
    LeetCode 99. Recover Binary Search Tree
    线索二叉树的建立与遍历
  • 原文地址:https://www.cnblogs.com/www-zhazha-com/p/8695700.html
Copyright © 2011-2022 走看看