c#中ArrayList和List的常用方法
在 C# 中,ArrayList
和List<T>
是常用的集合类型,它们提供了丰富的方法来操作列表。以下是它们的一些常用方法:
1. 创建列表
using System; using System.Collections; // ArrayList using System.Collections.Generic; // List<T> // 创建ArrayList(可存储任意类型) ArrayList arrayList = new ArrayList(); // 创建泛型List(强类型,推荐使用) List<string> list = new List<string>();
2. 添加元素
// ArrayList(可添加任意类型) arrayList.Add("apple"); // 添加字符串 arrayList.Add(123); // 添加整数 arrayList.Add(true); // 添加布尔值 // List<T>(只能添加指定类型) list.Add("apple"); list.Add("banana"); list.Add("cherry"); // 在指定位置插入元素 list.Insert(1, "grape"); // 结果:[apple, grape, banana, cherry]
3. 访问元素
// 通过索引访问(索引从0开始) string first = list[0]; // apple // 获取列表数量 int count = list.Count; // 4 // 检查索引是否越界 if (index < list.Count) {Console.WriteLine(list[index]); }
4. 修改元素
// 修改指定位置的元素 list[1] = "orange"; // 结果:[apple, orange, banana, cherry]
5. 删除元素
// 通过值删除(删除第一个匹配项) list.Remove("banana"); // 结果:[apple, orange, cherry] // 通过索引删除 list.RemoveAt(0); // 结果:[orange, cherry] // 删除范围内的元素 list.RemoveRange(0, 1); // 结果:[cherry] // 清空列表 list.Clear(); // 结果:[]
6. 判断元素是否存在
bool hasApple = list.Contains("apple"); // false
7. 遍历列表
// 使用foreach循环 foreach (string item in list) {Console.WriteLine(item); } // 使用for循环 for (int i = 0; i < list.Count; i++) {Console.WriteLine(list[i]); } // 使用Lambda表达式(C# 3.0+) list.ForEach(item => Console.WriteLine(item));
8. 转换为数组
string[] array = list.ToArray();
9. 排序
// 升序排序(元素需实现IComparable接口) list.Sort();// 降序排序 list.Sort((a, b) => b.CompareTo(a));// 自定义排序(按字符串长度) list.Sort((a, b) => a.Length.CompareTo(b.Length));
10. 查找元素
// 查找第一个匹配项 string firstFruit = list.Find(x => x.StartsWith("a"));// 查找所有匹配项 List<string> fruitsWithA = list.FindAll(x => x.Contains("a"));// 查找元素索引 int index = list.FindIndex(x => x == "apple");
ArrayList
特有的方法
// 转换ArrayList中的所有元素类型 ArrayList converted = new ArrayList(); foreach (object item in arrayList) {converted.Add(Convert.ToString(item)); }// 检查ArrayList是否固定大小 bool isFixedSize = arrayList.IsFixedSize; // false
List<T>
特有的方法
// 添加多个元素 list.AddRange(new[] { "apple", "banana" });// 反转列表顺序 list.Reverse();// 判断所有元素是否满足条件 bool allLongNames = list.TrueForAll(x => x.Length > 3);// 调整列表容量 list.Capacity = 100; // 设置最小容量 list.TrimExcess(); // 释放多余容量
注意事项
ArrayList
非泛型:可以存储任意类型,但存在装箱 / 拆箱开销,且类型不安全。List<T>
泛型:推荐使用,类型安全且性能更好。线程安全:两者都不是线程安全的,如需线程安全可使用
ConcurrentBag<T>
或手动同步。