C#中的集合

集合的使用

集合与数组比较类似,都用于存放 一组值

数组的优劣

数组的优势

数组在内存中是连续存储的,所以它的索引速度非常的快,而且赋值与修改元素也很简单

数组的劣势

1.在数组两个数据间插入数据很麻烦

2.在声明数组的时候,必须同时指明数组的长度,数组的长度过长,会造成内存的浪费 ,数组的长度过短,会造成数据溢出的错误

ArrayList(基于数组的顺序表)的使用

介绍

是一个动态数组,可以存储任何类型的元素,因此它本身不需要指定泛型。ArrayList 是非泛型的集合,这意味着它可以存储任何类型的对象,包括 null 值。

ArrayList基本方法

  1. Add(T item): 向 ArrayList 的末尾添加一个元素。

  2. AddRange(IEnumerable collection): 将一个 IEnumerable 的元素添加到 ArrayList 的末尾。

  3. BinarySearch(int index, int count, object value, IComparer comparer): 在 ArrayList 的一个子数组中搜索一个元素,并返回该元素的索引。

  4. Clear(): 移除 ArrayList 中的所有元素。

  5. Clone(): 创建 ArrayList 的浅拷贝。

  6. Contains(object item): 确定 ArrayList 是否包含特定的元素。

  7. CopyTo(Array array): 将 ArrayList 的元素复制到一个新的数组中。

  8. CopyTo(Array array, int index): 从指定的索引开始,将 ArrayList 的元素复制到另一个数组中。

  9. GetEnumerator(): 返回一个 IEnumerator,用于遍历 ArrayList

  10. IndexOf(object value): 返回 ArrayList 中特定元素的第一个索引。

  11. IndexOf(object value, int startIndex): 从指定的起始索引开始,返回 ArrayList 中特定元素的第一个索引。

  12. Insert(int index, object item): 在 ArrayList 的指定位置插入一个元素。

  13. Remove(object obj): 移除 ArrayList 中的第一个特定元素。

  14. RemoveAt(int index): 移除 ArrayList 中指定索引处的元素。

  15. RemoveRange(int index, int count): 移除 ArrayList 中从指定索引开始的一系列元素。

  16. Reverse(): 反转 ArrayList 中元素的顺序。

  17. Sort(): 按升序对 ArrayList 中的元素进行排序。

  18. Sort(IComparer comparer): 使用指定的比较器对 ArrayList 中的元素进行排序。

  19. ToArray(): 将 ArrayList 转换为数组。

  20. TrimToSize(): 将 ArrayList 的容量设置为其元素数。

ArrayList的优势

  1. ArrayList的大小是按照其中存储的数据来动态扩充与收缩的

  2. 在声明ArrayList对象 时不需要指定它的长度

  3. ArrayList可以方便的进行数据的添加、插入、和移除

ArrayList的劣势

  1. ArrayList在存储数据时使用object类型进行存储

  2. ArrayList不是类型安全的,使用时很可能出现类型不匹配的错误

  3. 就算都有插入了同一类型的数据,但在使用的时候,我们也需要将他们转化为对应的原类型来处理

  4. ArrayList的存储存在装箱和拆箱操作,导致其性能低下

装箱

装箱是指将值类型转换为引用类型(通常是object类型或接口类型)的过程。这个过程是自动进行的,不需要显式地编写代码。当需要将值类型传递给一个期望引用类型参数的方法时,就会发生装箱。例如:

int myInt = 10;
object obj = myInt; // 这里发生了装箱
拆箱

拆箱是装箱的逆过程,即将引用类型转换回值类型。与装箱不同,拆箱需要显式的类型转换。例如:

object obj = 10; // 假设这里发生了装箱
int myInt = (int)obj; // 这里发生了拆箱

在这个例子中,obj是一个引用类型object,它包含了之前装箱的整数值。当使用(int)显式地将obj转换回int类型时,发生了拆箱。

List

  1. List集合与ArrayList由于继承了相同的接口,故使用ArrayList相似

  2. 在声明中List集合时,需要同时为其声明List集合内的数据 对象类型即泛型

List的基本方法

  1. Add(T item): 向列表末尾添加一个元素。

  2. AddRange(IEnumerable<T> collection): 将一系列元素添加到列表末尾。

  3. Clear(): 移除列表中的所有元素。

  4. Contains(T item): 检查列表中是否包含特定的元素。

  5. CopyTo(T[] array): 将列表中的元素复制到一个数组中。

  6. CopyTo(T[] array, int arrayIndex): 从指定的数组索引开始,将列表中的元素复制到一个数组中。

  7. Find(Predicate<T> match): 查找一个匹配指定条件的元素。

  8. FindAll(Predicate<T> match): 查找所有匹配指定条件的元素。

  9. FindIndex(Predicate<T> match): 获取第一个匹配指定条件的元素的索引。

  10. FindIndex(int startIndex, Predicate<T> match): 从指定的起始索引开始,获取第一个匹配指定条件的元素的索引。

  11. FindLast(Predicate<T> match): 获取最后一个匹配指定条件的元素。

  12. FindLastIndex(Predicate<T> match): 获取最后一个匹配指定条件的元素的索引。

  13. ForEach(Action<T> action): 对列表中的每个元素执行指定的操作。

  14. GetEnumerator(): 返回一个用于遍历列表的 Enumerator

  15. IndexOf(T item): 获取特定元素在列表中的第一个索引。

  16. IndexOf(T item, int index): 从指定索引开始,获取特定元素在列表中的索引。

  17. Insert(int index, T item): 在指定位置插入一个元素。

  18. InsertRange(int index, IEnumerable<T> collection): 从指定位置开始,插入一系列元素。

  19. LastIndexOf(T item): 获取特定元素在列表中的最后一个索引。

  20. Remove(T item): 从列表中移除第一个匹配的元素。

  21. RemoveAt(int index): 从列表中移除指定索引处的元素。

  22. RemoveAll(Predicate<T> match): 移除列表中所有匹配指定条件的元素。

  23. RemoveRange(int index, int count): 移除列表中从指定索引开始的一系列元素。

  24. Reverse(): 反转列表中元素的顺序。

  25. Reverse(int index, int count): 反转列表中指定范围的元素顺序。

  26. Sort(): 按升序对列表中的元素进行排序。

  27. Sort(Comparison<T> comparison): 使用指定的比较器对列表中的元素进行排序。

  28. Sort(IComparer<T> comparer): 使用指定的比较器实现对列表中的元素进行排序。

  29. ToArray(): 将列表转换为数组。

  30. TrimExcess(): 减少列表的容量以匹配其元素的数量。

  31. TrueForAll(Predicate<T> match): 检查列表中的所有元素是否都满足指定的条件。

  • 23
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值