Array和List的异同
Array的创建格式是:类型+[ ]。
eg:String[] array = new String[5];
可以在创建时限定长度,但在后面使用中不可以更改。直接赋值{不适用于二维数组}、引用赋值。只能选其一,且不能重复赋值。可以放基本类型数据和对象。
List创建格式是:类型<泛型> 。
eg:List<String> list = new LinkedList< >();(由于李氏替换原则,所以后面的String可以省略。)
不能在创建时限定长度,但可以在以后的使用中更改。通过:.add(追加)、.set(更改)来赋值。不能放基本类型数据。
Array:
是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。Array获取数据的时间复杂度是O(1),但是要删除数据却是开销很大的,因为这需要重排数组中的所有数据。
List:
是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式,它继承Collection。
List有两个重要的实现类:ArrayList和LinkedList
ArrayList:
可以看作是能够自动增长容量的数组,利用ArrayList的toArray返回一个数组;Arrays.asList返回一个列表
LinkedList:
相对于ArrayList,LinkedList插入是更快的。因为LinkedList不像ArrayList一样,不需要改变数组的大小,也不需要在数组装满的时候要将所有的数据重新装入一个新的数组,这是ArrayList最坏的一种情况,时间复杂度是O(n),而LinkedList中插入或删除的时间复杂度仅为O(1)。ArrayList在插入数据时还需要更新索引(除了插入数组的尾部)。
类似于插入数据,删除数据时,LinkedList也优于ArrayList。
关于LinkedList和ArrayList的选用:
1) 你的应用不会随机访问数据。因为如果你需要LinkedList中的第n个元素的时候,你需要从第一个元素顺序数到第n个数据,然后读取数据。
2) 你的应用更多的插入和删除元素,更少的读取数据。因为插入和删除元素不涉及重排数据,所以它要比ArrayList要快。
本文对比了Array和List这两种数据结构的特点。Array是基于索引的结构,支持快速读取但删除操作开销较大。List则是一种有序集合,提供按索引访问方式,包括ArrayList和LinkedList两种实现,分别适用于不同场景。
1828

被折叠的 条评论
为什么被折叠?



