C#的 ArrayList集合 和 List 集合
// 集合 & 字典的初识
// 集合的使用
// 集合与数组比较类似,都用于存放一组值
// 数组的优劣势分析
// 1. 优势:数组在内存中是连续存储的,所以他的索引速度非常的快,而且赋值与修改元素也很简单
// 2. 劣势:在数组的连个数据之间插入数据很麻烦 在声明数组的时候,必须同时指明数组的长度,数组的长度过长,会
// 造成内存浪费,过低,会造成数据溢出的错误;
// ArrayList的使用
// arraylist 是 .NetFramework 提供的用于数据存储和检索的专用类
// 他是命名空间 System.Collections 下的一部分
// ArrayList 的优势
// 1. ArrayList 的大小是按照其中存储的数据来动态扩充与收缩的
// 2. 在声明 ArrayList 对象时并不需要指定他的长度
// 3. ArrayList 可以很方便的进行数据的添加,插入和移除
ArrayList arrayList = new ArrayList();
// 将数据新增到集合结尾处
arrayList.Add("123");
arrayList.Add(1234);
// 修改指定索引处的数据
arrayList[1] = 12;
// 移除指定索引处的数据
arrayList.RemoveAt(0); // 移除索引是 0 的数据
// 移除指定内容的数据
arrayList.Remove(1234); // 移除内容是 1234 的数据项
// 在指定索引处加入数据
arrayList.Insert(1, 2); // 在索引1处插入数据2
// 范围删除数据
arrayList.RemoveRange(0,2); // 从索引 0 开始 删除 2 个数据项
// 为何没人使用 ArrayList 集合而去使用 List 集合
// ArrayList 的劣势
// ArrayList 在存储数据时使用obbject进行存储的
// ArrayList 不是类型安全的,使用的收可能出现类型不匹配的错误
// ArrayList 的存储在拆箱和装箱操作,导致其性能低下
// 把值类型转换引用类型 就叫做 装箱
// 把引用类型转换值类型 就叫做 拆箱 - 性能损耗
// arrayList劣势的解决 使用 List 集合
// List 集合 和 ArrayList 集合都继承了相同的接口 所以很类似
// 在声明List集合时,需要同时为其声明List集合内的数据的对象类型
List<string> strings = new List<string>(); // 声明一个类型是 string 的 List 集合
// 将数据新增到集合的结尾处
// strings.Add(123); // 插入的如果不是 string 就会报错
strings.Add("123");
// 对象初始化赋值
List<int> ints = new List<int>() {
1, 2, 3, 4
};
// 遇到 <> 是泛型的指定
// 修改指定索引的数据
ints[0] = 0;
// 移除指定索引的数据
ints.RemoveAt(0);
// 移除内容是 4 元素
ints.Remove(4);
// 指定索引处插入元素
ints.Insert(1, 23); // 索引 1 处插入元素 23
// 返回集合第一个对象
ints.First();
// 求出集合的长度
ints.Count(); // 数组是 length 集合 是 Count
// 拿到第一个 item
// items.FirstOrDefault(m => m.id == 1); // 拿到第一个 id = 1 的item
//ints.FindAll(m => m.Name == "ACE"); // 拿到所有 Name = ACE 的 items