C#集合与泛型集合

摘要:
看到这个标题,我们应该知道有泛型集合,也有非泛型集合。由于它们都是集合,让我们今天简单地比较和解释一下,没有太多需要记住的内容了解和记住2017-11-0411:39:09C#非泛型集合类和泛型集合的泛型集合类之间的对应关系:********ArrayList对应于List**HashTable对应于Dictionary***Queue对应于Queue***Stack对应于StackSortedList对应于SortedList First:ArrayList和ListArrayList是几个组的复杂版本。泛型集合List<T>只能有一个参数类型,“<T>”中的T可以约束集合中的元素类型。

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

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

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

 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

免责声明:文章转载自《C#集合与泛型集合》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇HBase的bulkLoadMR执行环境有两种下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

泛型实例化,参数实例化

/*** 初始化 * @paramparameter 参数 * @return实例化的对象 */ protectedH init(String parameter){ Type superClass =getClass().getGenericSuperclass();//获取第二个枚举对象...

干货分享:ASP.NET CORE(C#)与Spring Boot MVC(JAVA)异曲同工的编程方式总结

我(梦在旅途,http://zuowj.cnblogs.com; http://www.zuowenjun.cn)最近发表的一篇文章《.NET CORE与Spring Boot编写控制台程序应有的优雅姿势》看到都上48小时阅读排行榜(当然之前发表的文章也有哦!),说明关注.NET CORE及Spring Boot的人很多,也是目前的主流方向,于是我便决定系...

Borland C++ 语法摘要

常用抽象数据类型:包括TList(链表)类、AnsiString类、Set(集合)类、DynamicArray(动态数组)类和TStream(流)类。 TList类实现了线性链表,可以存储任意类的对象。虽然它是链表,但是它实际上是一个存放指针的数组,可以通过其Items属性象访问一个数组那样实现对List对象的每一个元素的访问。 主要属性:Capaci...

算法训练 删除数组零元素

算法训练 删除数组零元素   时间限制:1.0s   内存限制:512.0MB     从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移动。注意,CompactIntegers函数需要接受数组及其元素个数作为参数,函数返回值应为删除操作执行后数组的新元素个数。输出删除后数组中...

JS常用知识点(一)

1.js数据类型   基本类型:String、Number、boolean、null、undefined、Symbol   引用类型:Object   null和undefined的区别:undefined表示定义但未赋值。null表示定义并赋值,但值为null,可用于对象的初始化或销毁。   Symbol表示独一无二的值,最大的用法是用来定义对象的唯一属...

C#6.0语言规范(十二) 数组

数组是一种数据结构,包含许多通过计算索引访问的变量。包含在数组中的变量(也称为数组的元素)都是相同的类型,这种类型称为数组的元素类型。 数组具有确定与每个数组元素相关联的索引数的等级。数组的等级也称为数组的维度。秩为1的数组称为一维数组。秩大于1的数组称为多维数组。特定大小的多维阵列通常被称为二维阵列,三维阵列等。 数组的每个维度具有相关联的长度,该长度是...