数组与数组列表
数组是存储元素集合的最常用的数据结构。大多数编程语言都提供了方法来轻松地声明数组和访问数组中的元素。arraylist可以看作是一个动态数组,它的大小可以增长。由于这个原因,程序员在定义arraylist时不需要知道它的大小。
什么是数组?
如图1所示,是一段代码,通常用于声明并向数组赋值。图2描述了数组在内存中的样子。
int值[5];值[0]=100;值[1]=101;值[2]=102;值[3]=103;值[4]=104; |
图1:声明和分配数组值的代码
100 | 101 | 102 | 103 | 104 |
索引:0 | 1 | 2 | 三 | 4 |
图2:存储在内存中的数组
在上面的代码中,定义了一个可以存储5个整数的数组,并使用索引0到4访问它们。数组的一个重要特性是,整个数组作为一个内存块分配,每个元素在数组中都有自己的空间。一旦定义了数组,它的大小就固定了。因此,如果在编译时不确定数组的大小,那么就必须定义一个足够大的数组来保证安全。但是,大多数情况下,我们实际使用的元素数量少于我们分配的数量。所以相当多的内存实际上被浪费了。另一方面,如果“足够大的数组”实际上不够大,程序就会崩溃。
什么是数组列表?
arraylist可以看作是一个动态数组,它的大小可以增长。因此,arraylists非常适合在声明时不知道所需元素大小的情况下使用。在Java中,ArrayList只能保存对象,不能直接保存基元类型(可以将基元类型放入对象中,也可以使用基元类型的包装类)。通常ArrayList提供了执行**、删除和搜索的方法。访问元素的时间复杂度为o(1),而**和删除的时间复杂度为o(n)。在Java中,arraylists可以使用foreach循环、迭代器或简单地使用索引来遍历。
数组和数组列表有什么区别