C#学习笔记三 数组、集合、哈希表

本文介绍了C#中的数组,包括一维、二维和动态数组的声明、初始化和操作。接着,详细讲解了ArrayList集合的构造、属性、方法,以及如何进行添加、删除和遍历。最后,探讨了Hashtable哈希表的构造、属性和方法,展示了添加、删除和查找键值对的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组能够按照一定规律把相关数据组织起来,通过索引或下标快速管理数据。

此外,C#中提供了ArrayList和HashTable两个类,分别为集合和哈希表,也可以存储多个数据。

 

一、一维数组

1.声明

type[] arrayName;

例如:int[] intArr;

 

2. 初始化

int[] arr = new int[5];

int[0] = 1;

int[1] = 2;

 

声明时初始化:

int[] arr = new int[5]{1,2,3,4,5};

 

声明数组时不初始化,但在对其初始化时必须使用new运算符

string[] strArr;

strArr = new string[7]{"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};

 

声明数组时初始化时,可以省略new运算符和数组的长度,编译器将根据初始值的数量自动计算数组长度。这与上面并不冲突

string[] strArr = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};

示例:

 

二.  二维数组

1.  声明

type[,] arrayName;

例如:生成一个2行2列的二维数组

int[,] arr = new int[2,2];

 

2. 初始化

int[,] arr = new int[2,2]{{1,2},{3,4}};

int[,] arr = new int[,]{{1,2},{3,4}};  //不指定行、列数

示例:声明3行2列的数组,并编程读取其维数

int[,] arr = new int[,] { {1,2},{3,4},{5,6}};
Console.WriteLine("行数为:{0}", arr.GetLength(0));
Console.WriteLine("列数为:{0}", arr.GetLength(1));

 

三、动态数组

动态数组实际上就是把数组的定义部分和初始化部分分别写在不同的语句中。

type[] arrName;

arrName = new type[n1,n2,..];

n1,n2 为数组的长度可以是整型常量或变量。 n1为第一维长度,n2为第二维长度。

示例

int m = 2;

int n = 3;

int[,] arr2 = new int[m,n];

 

四、数组操作

1. 遍历 foreach

2. 添加删除

删除是将后面的元素逐个提前,通常使用ArrayList完成的。

例如:删除第二个元素

int[] arr = new int[]{1,2,3,4,5};

int i = 1; //第二个,后面的提前

for(int i=n;i<arr.Length-1;i++){

      arr[i] = arr[i+1];

}

3.方法 Sort Reverse

排序 Sort  类的静态方法。

int[] arr = new int[]{5,2,3,1};

Array.Sort(arr);

反转 Reverse 类的静态方法

 

五、ArrayList 集合

集合主要以线性结构存储数据。C#提供了集中集合类,如ArrayList、Quene、Stack等。

ArrayList类位于System.Collections 命名空间下,可以动态添加删除元素。

ArrayList相当于一种高级动态数组,是Array类的升级版,但并不等同于数组。

(1)数组容量固定,ArrayList的容量可以自动扩充。

(2)ArrayList提供添加、删除和插入某一范围元素的方法,但Array只能一次操作一个元素

(3)ArrayList提供将只读和固定大小包装返回到集合的放,数组不提供。

(4)ArrayList只能是一维的,而Array可以是多维的。

1.三种构造器

(1)public ArrayList();

以默认 16 的大小来初始化内部的数组。

ArrayList al = new ArrayList();

for(int i=0; i<10; i++) 

    al.Add(i);

(2) 用ICollection对象来构造,并用该集合的元素对其赋值

int[] arr = new int[]{1,2,3,4,5,6};

ArrayList al = new ArrayList(arr);  //数组集合

(3)用指定的大小初始化

ArrayList al = new ArrayList(10);

for(int i=0;i<al.Count; i++)

2.常用属性

Capacity: 获取或设置ArrayList可包含元素数

Count:实际包含元素数

IsFixedSize:是否具有固定大小

IsReadOnly:是否只读

IsSynchronized:是否同步对ArrayList的访问

Item:获取或指定索引处的元素

SyncRoot:获取可用于同步ArrayList访问的对象。

3.常用方法

1. 添加 Add(object value)

2. 插入 Insert(int index, object value);

3. 删除

(1)Clear() 移除所有元素

(2)public virtual void Remove(Object obj);

示例:声明一个包含6个元素的一维数组,并用该数组实例化一个ArrayList对象,然后使用Remove方法从ArrayList对象中移除与3匹配的元素。

int[] arr = new int[]{1,2,3,4,5,6};

ArrayList al = new ArrayList(arr);

al.Remove(4);

(3)RemoveAt(int index);

删除指定索引位置处的元素

(4)RemoveRange(int index, int count)

移除一定范围的元素

4.遍历 foreach

5.查找

(1)Contains ,bool型,判断是否包含指定元素

(2)IndexOf 返回第一次出现指定元素的索引

(3)LastIndexOf 逆向搜索

 

六、Hashtable 哈希表

Hashtable用于表示键值对的集合,这些键值对根据键的哈希代码进行组织,每个元素都是一个存储于DictionaryEntry对象中的键值对。键不能为空引用,值可以。

1.构造函数

(1)public Hashtable()

使用默认的初始容量、默认加载因子、哈希代码提供程序和比较器来初始化HashTable类的新空实例。

(2)public Hashtable(int capacity)

指定初始容量

 

2.常用属性

Count :键值对数目

Keys :获取包含Hashtable键的ICollection

Values:获取包含Hasntable值的ICollection

 

3.常用方法

(1)添加 add

public virtual void Add(Object key, Object value);

(2)删除元素

clear:清空

Remove(object key):删除指定键的键值对

(3)遍历

foreach,注意类型用 DictionaryEntry

 

(4)查找

public virtual bool Contains(Object key);是否包含键,bool类型

public virtual bool ContainsValues(Object value); 是否包含值

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值