ArrayList的默认类型是Object,如果说存储的是int类型,那在ArrayList中就会把他转化为Object类型,当使用的时候还需要再转回int类型。如果使用的时候不把类型转回来的而直接使用的话,是会编译报错的。而且即使转换了,也可能由于转换的类型不对产生类型不匹配。 2)效率低下: 首先考虑为什么会报错,那是因为存储在ArrayList...
装箱拆箱,Arraylist本质上是一个可以自动扩容的object数组,由于万物之父来存储数据,自然存在装箱拆箱。当往其中进行只类型存储时就是在装箱(栈转去堆),当将值类型对象取出来转换使用时,就存在拆箱(堆转去栈)。 //装箱拆箱 int i = 1; arr[0] = i;//装箱 i = (int)arr[0];//拆箱 4.Stack容器: 本...
ArrayList的默认容量是16,每次向数组新增元素时都会检查容量够不够,不够则在当前数组容量上扩容一倍, 将旧元素Copy到新数组中,然后丢弃旧数组。若是能预估数组长度,则可在开始设置长度 ,如下: ArrayList arr = new ArrayList (300); 而不必经历16*2*2*2*2*2=512五次扩容,还留有212个空白位置。 3.List 功...
相对于Array,ArrayList多了自动扩容的功能,以及一些增删改查的方法 内部Array存放的是Object集合,所以是非类型安全容器,会引发拆箱装箱的问题 当容器满时,再进行添加时会将容器扩容两倍,默认的大小为4 总结 可以简单的说成是Array的加强版,但是ArrayList不是一个泛型实现,他会有类型不安全的问题,会导致拆箱装箱的情况 ...
ArrayList: 容量根据需要自动扩展。存放不一定连续。 每当执行Add、AddRange、Insert、InsertRange等添加元素的方法,都会检查内部数组的容量是否不够了,如果是,会以当前容量的两倍来重新构建一个数组,将旧元素Copy到新数组 中,然后丢弃旧数组,在这个临界点扩容...
ArrayList,属于System.Collections,不需要指定长度能动态扩容。所插入的数据为object类型,会发生装箱拆箱。类型不安全。 List<T>,属于System.Collections.Generic,底层数据结构是数组,避免了装箱拆箱,并且类型安全。 LinkedList<T>,属于System.Collections.Generic,底层数据结构是双向链表,类型安全,因为是链表实现的索引不用动...
//ArrayList 不定长的,连续分配的;//元素没有类型限制,任何元素都是当成object处理//优点:读取快 缺点:增删慢,如果是值类型,会有装箱操作ArrayListarrayList = new ArrayList();arrayList.Add("菜鸟");arrayList.Add("海澜");arrayList.Add(9257);//add增加长度 ...
Stack栈:先进后出,入栈和出栈,底层泛型数组实现,入栈动态扩容2倍 Queue队列:先进先出,入队和出队,底层泛型数组实现,表头表尾指针,判空还是满通过size比较 Queue和Stack主要是用来存储临时信息的 Array数组:需要声明长度,不安全 ArrayList数组列表:动态增加数组,不安全,实现了IList接口(表示可按照索引进行访问的非泛型...
Stack栈:先进后出,入栈和出栈,底层泛型数组实现,入栈动态扩容2倍 Queue队列:先进先出,入队和出队,底层泛型数组实现,表头表尾指针,判空还是满通过size比较 Array数组:需要声明长度,不安全 ArrayList数组列表:动态增加数组,不安全,实现了IList接口(表示可按照索引进行访问的非泛型集合对象),Object数组实现 ...