0
点赞
收藏
分享

微信扫一扫

C# 一周入门之《C#-集合》Day Five

pipu 2022-03-24 阅读 75

集合


可以理解为数据结构,和C++的STL如如出一辙;本质上就是为了程序运行时候的缓存,常用的有几个数据结构

一、ArrayList

ArrayList 代表了可被单独索引的对象的有序集合。它基本上可以替代一个数组。
但是,与数组不同的是,ArrayList 可以使用索引在指定的位置添加和移除项目,动态数组会自动重新调整它的大小。
同时 ArrayList 也允许在列表中进行动态内存分配、增加、搜索、排序各项。ArrayList是一个封装的数据操作集合,比数组强大、好用。

1. 构造方法

构造方法作用
ArrayList()创建 ArrayList 的实例,集合的容量是默认初始容量
ArrayList(ICollection c)(拷贝构造函数)创建 ArrayList 的实例,该实例包含从指定实例中复制的元素,并且初始容量与复制的元素个数相同
ArrayList(int capacity)创建 ArrayList 的实例,并设置其初始容量
ArrayList list_1= new ArrayList();
ArrayList list_2= new ArrayList(list_1);
ArrayList list_3= new ArrayList(20);

ArrayList list_4= new ArrayList(){32,4,54,76,8,7,9};

2. 常用的属性和方法

属性或方法作用
[ ]下标索引法
int Add(object value)向集合中添加 object 类型的元素,返回元素在集合中的下标
void AddRange(ICollection c)向集合中添加另一个集合 c
Capacity属性,用于获取或设置集合中可以包含的元素个数
void Clear()从集合中移除所有元素
bool Contains(object item)判断集合中是否含有 item 元素,若含有该元素则返回 True, 否则返回 False
void CopyTo(Array array)从目标数组 array 的第 0 个位置开始,将整个集合中的元素复制到类型兼容的数组 array 中
void CopyTo(Array array,int arraylndex)从目标数组 array 的指定索引 arraylndex 处,将整个集合中的元素赋值到类型兼容的数组 array 中
void CopyTo(int index,Array array,int arrayIndex,int count)从目标数组 array 的指定索引 arrayindex 处,将集合中从指定索引 index 开始的 count 个元素复制到类型兼容的数组 array 中
Count属性,用于获取集合中实际含有的元素个数
int IndexOf(object value)返回 value 值在集合中第一次出现的位置
int IndexOf(object value,int startIndex)返回 value 值在集合的 startindex 位置开始第一次出现的位置
int IndexOf(object value,int startIndex,int count)返回 value 值在集合的 startindex 位置开始 count 个元素中第一次出现的位置
int LastIndexOf(object value)返回 value 值在集合中最后一次出现的位置
int LastIndexOf(object value,int startIndex)返回 value 值在集合的 startindex 位置开始最后一次出现的位置
int LastIndexOf(object value,int startIndex,int count)返回元素 value值在集合的 startindex 位置开始 count 个元素中最后一次出现的位置
void Insert(int index,object value)返回 value 向集合中的指定索引 index 处插
void InsertRange(int index,ICollection c)向集合中的指定索引 index 处插入一个集合
void Remove(object obj)将指定兀素 obj 从集合中移除
void RemoveAt(int index)移除集合中指定位置 index 处的元素
void RemoveRange(int index,int count)移除集合中从指定位置 index 处的 count 个元素
void Reverse()将集合中的元素顺序反转
void Reverse(int index,int count)将集合中从指定位置 index 处的 count 个元素反转
void Sort()将集合中的元素排序,默认从小到大排序
void Sort(IComparer comparer)将集合中的元素按照比较器 comparer 的方式排序
void Sort(int index,int count,IComparer comparer)将集合中的元素从指定位置 index 处的 count 个元素按照比较器 comparer 的方式排序
void TrimToSize()将集合的大小设置为集合中元素的实际个数

3. 遍历ArrayList

1. 使用下标

ArrayList list = new ArrayList(){4354,65,7,34,35,7,6};

for(int i = 0; i < list.Count; i++)
{
	Console.Write(list[i] + " ");
}

2. 使用foreach

ArrayList list = new ArrayList(){4354,65,7,34,35,7,6};

foreach(int item in list)
{
	Console.Write(item + " ");
}

二、Queue

Queue (队列) 是常见的数据结构之一,队列是一种先进先出的结构,即元素从队列尾部插入,从队列的头部移除,类似于日常生活中的站队,先到先得的效果。

1. 构造函数

构造方法作用
Queue()创建 Queue 的实例,集合的容量是默认初始容量 32 个元素,使用默认的增长因子
Queue(ICollection col)创建 Queue 的实例,该实例包含从指定实例中复制的元素,并且初始容量与复制的元素个数、增长因子相同
Queue(int capacity)创建 Queue 的实例,并设置其指定的元素个数,默认增长因子
Queue(int capacity, float growFactor)创建 Queue 的实例,并设置其指定的元素个数和增长因子;增长因子是指当需要扩大容量时,以当前的容量(capacity)值乘以增长因子(growFactor)的值来自动增加容量。

例子:

//第 1 中构造器
Queue queueq1 = new Queue();
//第 2 中构造器
Queue queueq2 = new Queue(queue1);
//第 3 中构造器
Queue queueq3 = new Queue(30);
//第 4 中构造器
Queue queueq4 = new Queue(30, 2);

2. 常用方法

属性或方法作用
Count属性,获取 Queue 实例中包含的元素个数
void Clear()清除 Queue 实例中的元素
bool Contains(object obj)判断 Queue 实例中是否含有 obj 元素
void CopyTo(Array array, int index)将 array 数组从指定索引处的元素开始复制到 Queue 实例中
object Dequeue()移除并返回位于 Queue 实例开始处的对象
void Enqueue(object obj)将对象添加到 Queue 实例的结尾处
object Peek()返回位于 Queue 实例开始处的对象但不将其移除
object[] ToArray()将 Queue 实例中的元素复制到新数组
void TrimToSize()将容量设置为 Queue 实例中元素的实际数目
IEnumerator GetEnumerator()返回循环访问 Queue 实例的枚举数

三、Stack

栈是一种先进后出的结构,即元素从栈的尾部插入,从栈的尾部移除;函数的执行,压栈出栈都是很常见的。

1. 构造函数

构造方法作用
Stack()使用初始容量创建 Stack 的对象
Stack(ICollection col)创建 Stack 的实例,该实例包含从指定实例中复制的元素,并且初始容量与复制的元素个数、增长因子相同
Stack(int capacity)创建 Stack 的实例,并设置其初始容量

2. 常用方法

属性或方法作用
Push(object obj)向栈中添加元素,也称入栈
object Peek()用于获取栈顶元素的值,但不移除栈顶元素的值
object Pop()用于移除栈顶元素的值,并移除栈顶元素
Clear()从 Stack 中移除所有的元素
Contains(object obj)判断某个元素是否在 Stack 中
object[] ToArray()复制 Stack 到一个新的数组中

四、Hashtable

C# 中的 Hashtable 称为哈希表,也称为散列表,在该集合中使用键值对(key/value)的形式存放值。换句话说,在 Hashtable 中存放了两个数组,一个数组用于存放 key 值,一个数组用于存放 value 值。

此外,还提供了根据集合中元素的 key 值查找其对应的 value 值的方法。

最常用的构造方法

Hashtable objectName = new Hashtable();

1. 常用方法&属性

属性或方法作用
Count获取 Hashtable 中包含的键值对个数。
IsFixedSize获取一个值,表示 Hashtable 是否具有固定大小。
IsReadOnly获取一个值,表示 Hashtable 是否只读。
Item获取或设置与指定的键相关的值。
Keys获取一个 ICollection,包含 Hashtable 中的键。
Values获取一个 ICollection,包含 Hashtable 中的值。
void Add(object key,object value)向集合中添加元素
void Remove(object key)根据指定的 key 值移除对应的集合元素
void Clear()清空集合
ContainsKey (object key)判断集合中是否包含指定 key 值的元素
ContainsValue(object value)判断集合中是否包含指定 value 值的元素

五、SortedList

SortedList 类代表了一系列按照键来排序的键/值对,这些键值对可以通过键和索引来访问。

排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。如果您使用索引访问各项,则它是一个动态数组(ArrayList),如果您使用键访问各项,则它是一个哈希表(Hashtable)。集合中的各项总是按键值排序。

1. 常用方法&属性

属性或方法作用
Capacity获取或设置 SortedList 的容量。
Count获取 SortedList 中的元素个数。
IsFixedSize获取一个值,表示 SortedList 是否具有固定大小。
IsReadOnly获取一个值,表示 SortedList 是否只读。
Item获取或设置与 SortedList 中指定的键相关的值。
Keys获取 SortedList 中的键。
Values获取 SortedList 中的值。
Add( object key, object value )向 SortedList 添加一个带有指定的键和值的元素。
Clear();从 SortedList 中移除所有的元素。
ContainsKey( object key );判断 SortedList 是否包含指定的键。
ContainsValue( object value );判断 SortedList 是否包含指定的值。
GetByIndex( int index );获取 SortedList 的指定索引处的值。
GetKey( int index );获取 SortedList 的指定索引处的键。
GetKeyList();获取 SortedList 中的键。
GetValueList();获取 SortedList 中的值。
IndexOfKey( object key );返回 SortedList 中的指定键的索引,索引从零开始。
IndexOfValue( object value );返回 SortedList 中的指定值第一次出现的索引,索引从零开始。
Remove( object key );从 SortedList 中移除带有指定的键的元素。
RemoveAt( int index );移除 SortedList 的指定索引处的元素。
TrimToSize();设置容量为 SortedList 中元素的实际个数。
举报

相关推荐

0 条评论