1.在以后开发中都会使用集合作为数据容器。
2.非泛型集合 2.1 单列:ArrayList 2.1.1 Add(Object):可以添加任何数据类型 --引发问题:当我们遍历,除非将单个元素的类型写成Object 2.1.2 Remove(真事的元素本身,Object类型) --根据索引删除 RemoveAt(int index) --特性:集合中的元素被删除后,索引会自动维护 2.2 双列:HashTable 问题:单列集合已经可以存储元素,并且可以轻松的通过各种方法去维护集合中的内容。为什么需要双列集合? 解析:有特定的场景用途 2.2.1 方案一: foreach(string key in table.keys){ Console.WriteLine(key); Student stu=(Student).table[key]; Console.WriteLine(stu); } 2.2.2 方案二: foreach(Student stu in table.Values){ Console.WriteLine(stu.Name); } 2.2.3 方案三: key和value看成是一个整体 面向的就是table foreach(DictionaryEntry item in table){ Console.WriteLine("key是{0}\tvalue是{1}",item.Key,(Student)item.Value.name); } 2.2.4 删除数据table.Remove();只能按Key去删除一项,而不能通过下标删除3.泛型集合 3.1 单列:List<T> list.Contains();判断列表中是否包含指定元素 3.2 双列:Dictionary<K,V> 3.3 泛型:就是为了约束ArrayList中元素类型,而制定的一个新的集合类型,该类型只能加入同一类型的多个元素,标识符<T>可以看成是一个占位符,泛型是将运行时错误提前到了编译时4.关于for增强 4.1 C# //错误:item是个迭代变量 它不能被改变 4.2 Java //没有语法错误,但是改不了,因为改的是迭代变量item的值,而不是和数组相关的某个下标对应的值。5.集合本质的讲解 (集合为什么可以扩容?) 5.1 在Add()调度的时候 5.2 使用ArrayList首先需要引入命名空间 5.3 集合动态扩容原理:如果集合中元素个数为0,,并没有开辟空间 5.4 默认如果集合中出现了第一个元素,那么集合的大小是4,如果放入第5个元素,那么会扩容成8 5.5 如果在小括号中首次定义的时候指定了集合的长度,那么以后扩容的方式变成初次指定数字大小的2倍,如果没有指定长度,那么遵循5.2规范 5.6 集合内部也是通过两个数组相互copy完成的,但是微软已经对其做了优化,我们不用关心效率问题 5.7 集合的容量list.Capacity 5.8 集合装了几个元素list.Count6.集合初始化器 (两种) 6.1 ArrayList list=new ArrayList(){"001","002"}; 6.2 ArrayList list=new ArrayList(){ new Student(){Name="阿苏",Age=18}, new Student(){Name="baby",Age=8} };7.自动扩容
如果集合中一个元素都没有,Capacity的值为0,如果集合中出现第一个元素,分配4个空间,加入第5个元素的时候,可以容纳8个元素,每次扩容会扩成上次的2倍问题一:什么是集合?
将一对数据类型相同的数据放入一个容器内,该容器就是一个集合。问题二:什么是数组? 内存中开辟的一连串空间