数组和列表有什么区别
数组和列表有什么区别?
每个地方也说的不一样,但有时候只要理解了对方意思就行了,说一下我的理解。
数组和链表可以看做物理存储的概念。
数组是用一段连续的内存存储,可以随机访问。
链表不要求连续的内存。
而数据结构都是逻辑层的概念,线性表,栈,队列,树,图等等。
线性表这些逻辑层的概念,底层既可以用数组实现,也可以用链表实现。
线性表用数组实现叫做顺序表,用链表实现没有特殊的名字。
树用数组实现没有特殊的名字,用链表实现没有特殊的名字。
等等,好像也只有线性表那里有点特殊。
然后从这个角度来看,线性表,栈都是更高层的数据结构,而数组,链表就可以看做底层基础的数据结构。
所以一会儿把数组叫做这个,又叫做那个,理解就好,我也没找到明确的定义。
一、类型不同:
数组列表和数组非常相似,不过数组列表的容量可以动态变化,所以数组列表也是集合类型中使用频率较高的类型
二、元素不同:
Array数组可以包含基本类型和对象类型,ArrayList却只能包含对象类型。 但是需要注意的是:Array数组在存放的时候一定是同种类型的元素。ArrayList就不一定了,因为ArrayList可以存储Object。。
Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。Array大小是固定的,ArrayList的大小是动态变化的。ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢,这时使用Array就会比较有效率。可以在教程网站秒秒学上看看,上面Java课程讲解得挺好的。