zoukankan      html  css  js  c++  java
  • C#集合与泛型集合

    看到这个标题,大家应该就知道有泛型集合,就有非泛型集合

    既然都是集合,咱们今儿就简单的来对比讲解下

    需要记住的不算太多,理解记忆、理解记忆

     2017-11-0411:39:09

    C# 泛型集合之非泛型集合类与泛型集合类的对应:

    *****ArrayList对应List      

    ***HashTable对应Dictionary

    *****Queue对应Queue

    *****Stack对应Stack

    SortedList对应SortedList

    第一  : ArrayList(非泛型集合)  与List(泛型集合)

    ArrayList 是数组的复杂版本。ArrayList 类提供在大多数 Collections 类中提供但不在 Array 类中提供的一些功能:

    1.Array 的容量是固定的,而 ArrayList 的容量是根据需要自动扩展的。

    2.ArrayList 提供添加、插入或移除某一范围元素的方法。在 Array 中,您只能一次获取或设置一个元素的值。

    3.使用 Synchronized 方法可以很容易地创建 ArrayList 的同步版本。而 Array 将一直保持它直到用户实现同步为止。

    4.ArrayList 提供将只读和固定大小包装返回到集合的方法。而 Array 不提供。

    5.Array 提供 ArrayList 所不具有的某些灵活性:

       a.可以设置 Array 的下限,但 ArrayList 的下限始终为零。

       b.Array 可以具有多个维度,而 ArrayList 始终只是一维的。

       c.特定类型(不包括 Object)的 Array 的性能比 ArrayList 好,这是因为 ArrayList 的元素属于 Object 类型,所以在存储或检索值类型时通常发生装箱和取消装箱。

       d.要求一个数组的大多数情况也可以代之以使用 ArrayList。它更易于使用,并且通常具有与 Object 类型的数组类似的性能。

    6.Array 位于 System 命名空间中;ArrayList 位于 System.Collections 命名空间中。

    ArrayList类对象方法:

    1:Add()向数组中添加一个元素,
    2:Remove()删除数组中的一个元素
    3:(int i)删除数组中索引值为i的元素
    4:Reverse()反转数组的元素
    5:Sort()以从小到大的顺序排列数组的元素
    6:Clone()复制一个数组

    一:ArrayList:

    ArrayList可以不用指定维数 可动态赋值  赋不同类型值

    1 ArrayList arrayList1 = new ArrayList();
    2              arrayList1.
    3              arrayList1.Add("a");
    4              arrayList1.Add(1);
    5              arrayList1.Add("b");
    6              Response.Write(arrayList1[1]);

    二:Array:

    Array的容量是固定的 先指定大小 在赋值

    1  Array arrayList2 = Array.CreateInstance(typeof(string), 6);
    2              arrayList2.SetValue("a", 0);
    3              arrayList2.SetValue("b", 1);
    4              Response.Write(arrayList2.GetValue(1));

    List泛型集合:

    泛型集合List<T>
      泛型最重要的应用就是集合操作,使用泛型集合可以提高代码重用性,类型安全和更佳的性能。
      List<T>的用法和ArrayList相似,List<T>有更好的类型安全性,无须拆,装箱。
    在泛型定义中,泛型类型参数“<T>”是必须指定的,其中T是定义泛型类时的占位符,其并不是一种类型,仅代表某种可能的类型。在定义时T会被使用的类型代替。泛型集合List<T>中只能有一个参数类型,“<T>”中的T可以对集合中的元素类型进行约束。

    eg:
    List<T>添加、删除、检索元素的方法和ArrayList相似,明显的特点是不需要像ArrayList那样装箱和拆箱。

     1 List < Student > students = new List < Student > ();
     2    Student stu1 = new Student();
     3    stu1.Name = "陆小凤";
     4    stu1.Number = "0801";
     5    stu1.Score = 20;
     6    Student stu2 = new Student();
     7    stu2.Name = "西门吹雪";
     8    stu2.Number = "0802";
     9    stu2.Score = 23;
    10    students.Add(stu1);
    11    students.Add(stu2);
    12    Console.WriteLine("集合中的元素个数为{0}", students.Count);
    13    foreach (Student stu in students)
    14    {
    15     Console.WriteLine("/t{0}/t{1}/t{2}", stu.Name, stu.Number, stu.Score);
    16    }
    17    students.Remove(stu1);
    18    Console.WriteLine("集合中的元素个数为{0}", students.Count);
    19    Console.ReadLine();

    List<T>和ArrayList的区别
          List<T>和ArrayList的相同点:添加元素、删除元素、通过索引访问元素方法相同。
      List<T>和ArrayList的不同点:
    ArrayList可以添加任意类型元素;List<T>对添加的元素具有类型约束;
    ArratList添加时装箱,读取时拆箱;List<T>不需要装箱,拆箱操作;

     1 //创建Person对象
     2    Person p1 = new Person("张三", 30);
     3    Person p2 = new Person("李四", 20);
     4    Person p3 = new Person("王五", 50);
     5    //创建类型为Person的对象集合
     6    List < Person > persons = new List < Person > ();
     7    //将Person对象放入集合
     8    persons.Add(p1);
     9    persons.Add(p2);
    10    persons.Add(p3);
    11    //输出第2个人的姓名
    12    Console.WriteLine(persons[1].Name);
    13    foreach (Person p in persons)
    14    {
    15     Console.WriteLine("/t{0}/t{1}", p.Name, p.Age);
    16    }

    今天暂时到这里,慢慢理解,我脑子也脑子有点儿不够用了,头疼过去过去就好了

    2017-11-04  11:40:11

  • 相关阅读:
    五星评价
    IE9以上 CSS文件因Mime类型不匹配而被忽略 其他浏览器及IE8以下显示正常
    js时间显示设置
    jq手风琴---点击时列表的左边距逐渐减小
    break continue return
    validate插件:验证密码没有空格 用户名是5-10位 至少包含数字和大小写字母中的两种字符
    Commons IO
    Servlet & JSP
    设计模式
    Table of Contents
  • 原文地址:https://www.cnblogs.com/TheJoker/p/7782924.html
Copyright © 2011-2022 走看看