集合(Collection):源起
-
集合有什么用?
- 集合(Collection)类是专门用于 数据存储 和 检索 的类。 数据结构 : 导言
-
是 计算机存储、组织、管理数据的方式。
是 指相互之间存在 一种或多种 特定关系的数据元素的 集合。
下一章 |
---|
故事:从数组开始
序章:采集时代
从前,有一片 大陆 (C# 语言系统),
上面 有(预定义)很多个 民族(变量类型),
有int族,float族,string族 等等。
这些民族,都有一个共同点,
大家 修建的房屋(分配内存)只能够 住一个人(容纳单个数据)。
大家各自为政,孤独的生活着,出海打渔也是独来独往。
每到 日出时分(执行程序),大海上就会出现密密麻麻的小木筏。
int a=1;//木筏a
int b=2;//木筏b
int c=3;//木筏c
...
int z=26;//木筏z
领主(程序员)看着眼花缭乱,
要关注每个人的行动,太费神费力了。
怎么治理好这片 海域(内存)呢?
于是领主造出了一艘 帆船(数据容器),命名为Array(数组)。
每个民族的人要出海统一坐上这条船,领主只需要关注这一条船就可以了。
int[] arr=new Array[26];//造大船出海 彻底摆脱小木筏
领主将设计图分发给每个民族,
这样一来,海上少了很多小木筏,
取而代之的是几艘较大的Array帆船。
int[] arr={1,2,3,...,26};//int族人,大家都上arr这条帆船
string[] arr_str={"A","B",...,"Z"};//string族人,你们上arr_str这条船
领主表示很满意!
To Top |
---|
第二节:航海时代
好景不长,领主又开始犯难了,
人(数据)是好管理了,但是造船遇到了新问题。
Array虽然便于管理,但是每次造的船,都有固定人数上限。
有时候出海人数少,船没坐满;
有时候出海人数多,船又坐不下。
当个领主真累啊!
于是领主,又从西方引进了一项新的技术:造船术(集合)。
有了造船术,就不用担心船的舱室问题了。
造船术能够根据出海的人数自动建造出相应的容量的船只。
领主再也不用为安排人员上船的问题而发愁了。
基础船只:数组
-
数组: 单桅帆船
-
第一个 可以管理
多个数据 的
容器。
对于 系统预定义类型中,都是针对 单个数据。
通过数组,可定义一个容器,来管理特定数量和类型的 多个 数据。
局限
-
虽说 数组 是一种非常有用的数据结构 但其存在 严重的局限性!
用数组管理数据, 必须 先知道 数组长度(元素个数)。
然而 实际开发 中,很多数据往往 无法 事先知道元素个数。
数组元素的 数据类型 必须 相同
应用程序 必须 通过循环索引 来访问元素
当你看到一堆必须时,你就知道它的局限性是多么严重!
小结
-
因此,数组使用并
不方便。
集合 运应而生。
C#提供了 集合 , 更为方便 地管理数据。
To Top |
---|
第三节:造船术
-
有了造船术,领主就把造船的任务委托给了造船厂。
-
一切变得如此的井然有序,既然造船术如此神奇,我们就一起学习一下这项技术吧。
数组
-
将一堆数据类型相同的数据放入到一个容器内,
-
该容器就是数组:内存中开辟的一连串空间。
造船术:类比理解 (集合就像造船术)
-
各种船只设计的统称,它们 不限定成员种族,
-
还能在航行过程中 按需扩容 。
术语:集合
-
简单的说就是数组的升级版。
-
集合 是通过高度结构化的方式存储任意对象的类的统称。
-
可存储 任意类型 且 长度可变 的对象
-
可将一组类似的类型化对象组合在一起。
-
他可以动态的对集合的长度(也就是集合内最大元素的个数)进行定义和维护!
优势:
-
集合不仅能随意调整大小,
-
而且对存储或检索在其中的对象提供了更为高级的方法。
扩展阅读
-
集合结构划分:
-
泛型集合 using System.Collections
非泛型集合 using System.Collection.Generic
.NET Framework 的 强类型集合
- 具有自动执行元素类型验证的功能 .NET Framework 引入了 泛型集合或非强类型非泛型集合
- 使用时要保证元素的类型是集合所需的类型
下一章 |
---|
To Top |