C#中的集合
集合的使用
集合与数组比较类似,都用于存放 一组值
数组的优劣
数组的优势
数组在内存中是连续存储的,所以它的索引速度非常的快,而且赋值与修改元素也很简单
数组的劣势
1.在数组两个数据间插入数据很麻烦
2.在声明数组的时候,必须同时指明数组的长度,数组的长度过长,会造成内存的浪费 ,数组的长度过短,会造成数据溢出的错误
ArrayList(链表)的使用
介绍
是一个动态数组,可以存储任何类型的元素,因此它本身不需要指定泛型。ArrayList
是非泛型的集合,这意味着它可以存储任何类型的对象,包括 null
值。
ArrayList基本方法
-
Add(T item): 向
ArrayList
的末尾添加一个元素。 -
AddRange(IEnumerable collection): 将一个
IEnumerable
的元素添加到ArrayList
的末尾。 -
BinarySearch(int index, int count, object value, IComparer comparer): 在
ArrayList
的一个子数组中搜索一个元素,并返回该元素的索引。 -
Clear(): 移除
ArrayList
中的所有元素。 -
Clone(): 创建
ArrayList
的浅拷贝。 -
Contains(object item): 确定
ArrayList
是否包含特定的元素。 -
CopyTo(Array array): 将
ArrayList
的元素复制到一个新的数组中。 -
CopyTo(Array array, int index): 从指定的索引开始,将
ArrayList
的元素复制到另一个数组中。 -
GetEnumerator(): 返回一个
IEnumerator
,用于遍历ArrayList
。 -
IndexOf(object value): 返回
ArrayList
中特定元素的第一个索引。 -
IndexOf(object value, int startIndex): 从指定的起始索引开始,返回
ArrayList
中特定元素的第一个索引。 -
Insert(int index, object item): 在
ArrayList
的指定位置插入一个元素。 -
Remove(object obj): 移除
ArrayList
中的第一个特定元素。 -
RemoveAt(int index): 移除
ArrayList
中指定索引处的元素。 -
RemoveRange(int index, int count): 移除
ArrayList
中从指定索引开始的一系列元素。 -
Reverse(): 反转
ArrayList
中元素的顺序。 -
Sort(): 按升序对
ArrayList
中的元素进行排序。 -
Sort(IComparer comparer): 使用指定的比较器对
ArrayList
中的元素进行排序。 -
ToArray(): 将
ArrayList
转换为数组。 -
TrimToSize(): 将
ArrayList
的容量设置为其元素数。
ArrayList的优势
-
ArrayList的大小是按照其中存储的数据来动态扩充与收缩的
-
在声明ArrayList对象 时不需要指定它的长度
-
ArrayList可以方便的进行数据的添加、插入、和移除
ArrayList的劣势
-
ArrayList在存储数据时使用object类型进行存储
-
ArrayList不是类型安全的,使用时很可能出现类型不匹配的错误
-
就算都有插入了同一类型的数据,但在使用的时候,我们也需要将他们转化为对应的原类型来处理
-
ArrayList的存储存在装箱和拆箱操作,导致其性能低下
装箱
装箱是指将值类型转换为引用类型(通常是object
类型或接口类型)的过程。这个过程是自动进行的,不需要显式地编写代码。当需要将值类型传递给一个期望引用类型参数的方法时,就会发生装箱。例如:
int myInt = 10; object obj = myInt; // 这里发生了装箱
拆箱
拆箱是装箱的逆过程,即将引用类型转换回值类型。与装箱不同,拆箱需要显式的类型转换。例如:
object obj = 10; // 假设这里发生了装箱 int myInt = (int)obj; // 这里发生了拆箱
在这个例子中,obj
是一个引用类型object
,它包含了之前装箱的整数值。当使用(int)
显式地将obj
转换回int
类型时,发生了拆箱。
List
-
List集合与ArrayList由于继承了相同的接口,故使用ArrayList相似
-
在声明中List集合时,需要同时为其声明List集合内的数据 对象类型即泛型
List的基本方法
-
Add(T item): 向列表末尾添加一个元素。
-
AddRange(IEnumerable<T> collection): 将一系列元素添加到列表末尾。
-
Clear(): 移除列表中的所有元素。
-
Contains(T item): 检查列表中是否包含特定的元素。
-
CopyTo(T[] array): 将列表中的元素复制到一个数组中。
-
CopyTo(T[] array, int arrayIndex): 从指定的数组索引开始,将列表中的元素复制到一个数组中。
-
Find(Predicate<T> match): 查找一个匹配指定条件的元素。
-
FindAll(Predicate<T> match): 查找所有匹配指定条件的元素。
-
FindIndex(Predicate<T> match): 获取第一个匹配指定条件的元素的索引。
-
FindIndex(int startIndex, Predicate<T> match): 从指定的起始索引开始,获取第一个匹配指定条件的元素的索引。
-
FindLast(Predicate<T> match): 获取最后一个匹配指定条件的元素。
-
FindLastIndex(Predicate<T> match): 获取最后一个匹配指定条件的元素的索引。
-
ForEach(Action<T> action): 对列表中的每个元素执行指定的操作。
-
GetEnumerator(): 返回一个用于遍历列表的
Enumerator
。 -
IndexOf(T item): 获取特定元素在列表中的第一个索引。
-
IndexOf(T item, int index): 从指定索引开始,获取特定元素在列表中的索引。
-
Insert(int index, T item): 在指定位置插入一个元素。
-
InsertRange(int index, IEnumerable<T> collection): 从指定位置开始,插入一系列元素。
-
LastIndexOf(T item): 获取特定元素在列表中的最后一个索引。
-
Remove(T item): 从列表中移除第一个匹配的元素。
-
RemoveAt(int index): 从列表中移除指定索引处的元素。
-
RemoveAll(Predicate<T> match): 移除列表中所有匹配指定条件的元素。
-
RemoveRange(int index, int count): 移除列表中从指定索引开始的一系列元素。
-
Reverse(): 反转列表中元素的顺序。
-
Reverse(int index, int count): 反转列表中指定范围的元素顺序。
-
Sort(): 按升序对列表中的元素进行排序。
-
Sort(Comparison<T> comparison): 使用指定的比较器对列表中的元素进行排序。
-
Sort(IComparer<T> comparer): 使用指定的比较器实现对列表中的元素进行排序。
-
ToArray(): 将列表转换为数组。
-
TrimExcess(): 减少列表的容量以匹配其元素的数量。
-
TrueForAll(Predicate<T> match): 检查列表中的所有元素是否都满足指定的条件。
原文地址:https://blog.csdn.net/weixin_64532720/article/details/140306975
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!