使用集合组织相关数据

一、 集合概述

1ArraysList

  没有掌握集合的知识之前,我们通常都是用数组来存储元素。数组有一个很明显的特点就是,长度是固定的。假设,用数组存储一组员工信息,显然公司的员工数量是有流动性的,如果来了新员工,那么以现有的知识来思考,这个数组只能重新定义。能否建立一个动态的 “数组”,使我们可以对其进行动态的操作呢?下面就引入集合,来解决这个问题。

ArrayList非常类似于数组,也有人称之为数组列表,ArrayList可以动态维护,我们知道数组的容量是固定的,而ArrayList的容量可以根据需要来自动扩充。


它的索引会根据程序的扩展而重新进行分配和调整。AraayList提供了一系列的方法对其中的元素进行访问,增加,删除操作。

 二、**ArrayList**

★提示:和数组类似ArrayList中存储的数据称为元素:ArrayList可以保存的元素数就是ArrayList的容量,其容量的默认值为0,可以通过一系列方法,对其中的元素进行操作,

 ArrayList属于非泛型集合,现在大多数情况用的很少了。文章里会首先介绍非泛型集合,是因为引出泛型集合,就像通过数组引出集合的概念一样。

ArrayList中的元素,索引从0开始。

ArrayList可能会介绍的详细一点,这都是为了后面的内容做铺垫。

定义一个ArrayList需要注意的是,ArrayList是动态可维护的,,因此定义时可以指定容量或者不指定容量,

 

using  System.Collection;
//创建容量为0的ArrayList对象
ArrayList Student =new ArrayList();
//创建一个容量为5的ArrayList对象
ArrayList  teacher=new ArrayList();

1.简介

ArrayList 的方法和属性

ArrayList非常类似于数组,可以填补数组的不足,进行元素的动态维护。数组的长度是固定的,而ArrayList的容量可以根据需要自动扩充,它的索引会根据程序的扩展而重新分配和调整。

属性名称                              说明

ArrayList是可以动态维护的,因此在定义的时候可以指定容量,也可以不指定容量。

Count                                  获取ArrayList中实际包含的元素数

如图:

返回值类型                               方法名称                                   说明

金沙官网线上 1

int                                          Add(object  value)                        将对象添加到ArrayList结尾处

 

void                                    Remove At(int  index)                      移除ArrayList指定元素索引处的元素

2.给ArrayList添加数据

void                                    Remove(Object   value)                    从ArrayList 中移除特定的对象

 a.通过Add()方法添加元素

void                                     Clear()                                              从ArrayList中移除所有元素

 Add()方法是将元素添加到集合结尾处,返回一个int类型,用于返回所添加元素的索引。

1.通过Add方法来添加元素

重点:如果Add()添加的元素是值类型,这些元素都会装箱处理转换为Object引用类型。因此ArrayList中所有的元素都是引用类型。

返回值:int 是一个整型,用于返回所添加的元素的索引

 

参数:如果向ArrayList 中添加的元素是值类型的,这些元素就会装箱处理转换为Object引用类型,然后保存。

b.通过集合初始化器构造集合

因此,ArrayList所有元素都是引用类型

 金沙官网线上 2

2.存取ArrayList获取一个元素的方法和和数组是一个样的,也是通过索引(index)来访问,ArrayList中第一个元素是0,

 

需要注意的是由于给那些ArrayList 添加的元素都会被转换为,Object型,所以已在访问这些元素的时候,都会被转换成Object,所以在访问这些元素的时候,必须转换为原来的类型。

3.存取ArrayList中的单个元素

如示例2:SE对象

 ArrayList获取一个元素的方法和数组是一样的,也是通过索引来访问。需要注意的是,由于元素添加时都会被转换为object类型,所以在访问元素的时候必须把他们转换成原来的数据类型。

SE  engineer =(SE)engineers[0];
MessageBox.Show(engineer SayHi());

 金沙官网线上 3

3.3

 

3.遍历数组中的元素:

4.删除ArrayList中的元素

通过循环的方式来将数组中的元素取出来,这种方式称之为遍历数组。以数组的长度作为循环次数,将循环变量作为数组的索引逐个取出元素。示例:

4.1.RemoveAt()根据索引删除指定元素。

static  void Main(string[] args)
{
int[] array =new int[]{0,1,2,3,4,5};
for(int i=0;i<array.Length;i++)
  {
Console.WriteLine(array[i]);
    }
}

使用索引删除元素还是存在一定的风险:

4.删除元素ArryList中的元素Remove()方法和RemoveAt()方法只能删除一个元素。在程序中我们经常遇到删除所有元素的需求。

金沙官网线上 4

这时候使用Remove()和RemoveAt()就显得繁琐了。Clear()方法可以删除集合中的所有元素。

运行后,发现系统异常,因为ArrayList的索引会自动分配和调整,在上图注意事项1的集合中添加了三个元素,删除第一个元素后,索引为“2”的第三个元素就不存在了,长度动态的发生了变化,所以再删除索引为“2”的元素就会发生错误。如果存在索引为“2”的元素,那么删除之前和删除之后是两个不同的对象,这时候会导致数据不对。因此使用索引删除元素还是存在一定的风险的。

3.1.2Hashtable

 

属性名称                                                              说明

4.2.Remove()指定对象删除。

金沙官网线上,Count                                                                  获取包含在Hashtable中键值对的数目

4.3.Clear()删除集合所有元素。

Keys                                                                     获取包含在Hashtable中键的集合


Values                                                                  获取包含在Hashtable中值的集合

 

返回值类型                                方法名称                                       说明

三、Hashtable

void                                          Add(Object Keys,object value)              将带有指定键和值的元素添加Hashtable中

对于ArrayList集合我们通常会使用索引访问操作元素,但是这样的话就存在一个问题,使用这种方式必须知道要操作的索引是多少。

void                                           Remove(Object  key)                           从Hashtable中移除带有特定键的元素

Hashtable可以针对这种情况解决问题,它为每个元素都取了一个有意义并且唯一的关键字,然后通过关键字来访问元素。

void                                           Clear()                                                   从Hashtable中移除所有元素

Hashtable,通常称为哈希表,也有人称它为“字典”。使用字典这个名词,是因为其数成非常类似于现实生活中的字典。Hashtable的数据是通过(key)键和值(value)来组织的。

1.Hashtable通过Add()方法添加元素

如图:

Hashtable元素的Add方法有两个参数,一个表示键,一个表示键所对应的值。

金沙官网线上 5

2.获取Hashtable的元素

1.添加元素:

和ArrayList 不同访问,Hashtable元素时可以直接通过键来获取具体值,同样由于值的类型是Object,所以当得到一个值时,也要通过类型转换得到的对象。

Add(key,value)

3.删除Hashtable的元素

 

通过键(Keys),使用Remove()方法就可以删除的元素。

2.获取Hashtable元素

3.2.2泛型集合List<T>

2.1.和ArrayList不同,访问Hashtable元素时只能使用通过键名来获取具值。

定义一个List<T>泛型集合的方法如下:

如图:

语法:

金沙官网线上 6

List<T> 对象名 =new  List<T>();

用索引访问,程序运行时会提示“未将对象引用设置到对象的示例”。

"<T>"中的T表示可以对集合中的元素类型进行约束,T表示集合中管理的元素类型。

 

  1. List<T>对保存的元素类型做约束,ArrayList可以保存任何类型的元素
  2. list<T>保存值类型元素不会进行装箱拆箱操作而ArrayList会

2.2.由于添加时值被隐试转换为object类型,所以当从集合中获取元素时要通过类型转换得到指定类型对象。

 

泛型集合Dictionnary<K,V>

泛型集合Dictionary可以代替上面的HashTable

定义一个泛型集合Dictionary<K,V>的语法

Dictionary<K,V>  集合名称=new   Dictionary<K,V>();

在”<K,V>”中K表示集合中Key的类型,V表示Value的类型,他们的含义和List<K,V>是相同的

 

 

示例:

泛型类

在集合中使用泛型只是泛型多种应用的一种,在类、方法等方面已有泛型的应用

定义一个泛型类的语法如下:

public class     类名<T>
{
    //....
}

T指类型参数,代表具体的数据类型,可以是值类型也可以是引用类型

 

金沙官网线上 7

本文由金沙官网线上发布于编程,转载请注明出处:使用集合组织相关数据

您可能还会对下面的文章感兴趣: