首页 > 试题广场 >

数组(Array)和列表(ArrayList)有什么区别?什

[问答题]
数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用Array而不是ArrayList?
数据类型方面: Array数据可以是基本类型何包装类型,ArrayList只能是包装类型.
容量方面:Array容量是静态固定的,ArrayList是动态变化的。
支持操作:ArrayList提供更多操作,Array提供的更多依赖于Arrays提供的方法。
使用建议:如果你的操作对象是基本型别,而且需要在空间不足时自动扩增容量,Array便不适合,此时就得使用外覆类的容器了。
                ArrayList存入对象时,抛弃类型信息,所有对象屏蔽为Object,编译时不检查类型,但是运行时会报错。
               基于效率和类型检验,应尽可能使用Array无法确定数组大小时才使用ArrayList
发表于 2017-10-31 15:54:05 回复(0)
下面列出了Array和ArrayList的不同点: Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。 Array大小是固定的,ArrayList的大小是动态变化的。 ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。 对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对比较慢。
发表于 2016-03-09 23:55:30 回复(0)
arraylist的大小是自动变化的,如果在初始化的时候没有定义它的默认容量大小,那么默认是10,之后的增长规则是:((旧容量 * 3) / 2) + 1
发表于 2016-01-11 22:49:10 回复(2)
Array是一个固定的数组对象
ArrayList是一个底层为数组结构的集合,其中对数组进行了封装,可以理解为一个动态的数组,其中包含了更多对数组进行操作的方法。
发表于 2022-04-21 17:05:36 回复(0)

1存储大小2.空间3.操作的方法

发表于 2019-06-25 07:19:23 回复(0)

ArrayList可以算是Array的加强版,(对array有所取舍的加强)。


    存储内容比较:
  • Array数组可以包含基本类型和对象类型,
  • ArrayList却只能包含对象类型。
但是需要注意的是:Array数组在存放的时候一定是同种类型的元素。ArrayList就不一定了,因为ArrayList可以存储Object。



    空间大小比较:
  • 它的空间大小是固定的,空间不够时也不能再次申请,所以需要事前确定合适的空间大小。
  • ArrayList的空间是动态增长的,如果空间不够,它会创建一个空间比原空间大一倍的新数组,然后将所有元素复制到新数组中,接着抛弃旧数组。而且,每次添加新的元素的时候都会检查内部数组的空间是否足够。(比较麻烦的地方)。


方法上的比较:
ArrayList作为Array的增强版,当然是在方法上比Array更多样化,比如添加全部addAll()、删除全部removeAll()、返回迭代器iterator()等。

适用场景:
如果想要保存一些在整个程序运行期间都会存在而且不变的数据,我们可以将它们放进一个全局数组里,但是如果我们单纯只是想要以数组的形式保存数据,而不对数据进行增加等操作,只是方便我们进行查找的话,那么,我们就选择ArrayList。而且还有一个地方是必须知道的,就是如果我们需要对元素进行频繁的移动或删除,或者是处理的是超大量的数据,那么,使用ArrayList就真的不是一个好的选择,因为它的效率很低,使用数组进行这样的动作就很麻烦,那么,我们可以考虑选择LinkedList。

发表于 2016-09-01 10:00:17 回复(11)
  • 数组可以包含基本数据类型和引用类型,ArrayList只能包含引用类型。
  • ArrayList是基于数组实现的,数组大小不可以调整大小,但ArrayList可以通过内部方法自动调整容量。
  • ArrayList是List接口的实现类,相比数组支持更多的方法和特性。

场景:

  • 当集合长度固定时,使用数组;当集合的长度不固定时,使用ArrayList。但如果长度增长频繁,应考虑预设ArrayList的长度或者使用链表LinkedList代替,ArrayList每次扩容都要进行数组的拷贝。
  • 由于ArrayList不支持基本数据类型,所以保存基本数据类型时需要装箱处理,对比数组性能会下降。这种情况尽量使用数组。
  • 数组支持的操作方法很少,但内存占用少,如果只需对集合进行随机读写,选数组;如果需要进行插入和数组,使用数组的话,需要手动编写移动元素的代码,ArrayList中内置了这些操作,开发更方便。
发表于 2019-01-18 21:15:02 回复(0)
Array可以包含基本类型和对象类型,ArrayList只能包含对象类型。Array的空间大小是固定的,ArrayList的空间大小是动态的,空间不够时,它会创建一个比原先大一倍的空间,再把原先大值复制过来。方法不一样,多了,添加全部addAll(),删除全部removeAll(),返回迭代器iterator()。
编辑于 2020-08-31 15:40:17 回复(0)
如果元素个数是固定的推荐数组,元素个数不是固定的推荐集合
发表于 2020-08-15 11:50:31 回复(0)
<p>array数组存放基本类型的数据和对象类型的数据,arraylist存放对象类型的数据</p><p>array长度固定,后者长度不固定</p><p><br></p>
发表于 2020-07-25 12:11:20 回复(0)
array大小固定 arraylist大小动态变化 array里只能放基本数据类型 arraylist装包装类 arraylist用可以用迭代器遍历 对其政审改 array
发表于 2020-07-09 21:55:07 回复(0)
<p>1.支持类型2.容量大小3.支持的方法。</p><p>操作大小固定,数据为基本数据类型的时候用array。</p><p><br></p>
发表于 2020-05-31 21:05:03 回复(0)

array数据是固定的,主要包含基本数据类型和引用数据类型,

arraylist数据是不固定的,主要包含引用数据类型

发表于 2020-03-20 23:02:54 回复(0)

array可以存储基本数据类型,也可以存储引用数据类型,大小固定

arraylist只可以存储引用数据类型,大小不固定

当数据为基本数据类型,且大小固定是使用array

发表于 2020-03-04 11:27:24 回复(0)
1. 基本数据类型(Primitive Types):Java中的基本数据类型包括:int、long、boolean、double、char等。Java中规定,基本数据类型的关键字是以小写字母开头。基本数据类型只有数值,没有ID(在内存中的位置),举个例子,假如有int a=2和int b=2,则Java会认为a和b是完全相同的。同时,基本数据类型是不可变的(Immutable),在栈中分配内存,这使得基本数据类型的开销相对较低。 2. 对象数据类型(Object Types):Java中的对象数据类型包括:Integer、Long、Boolean、Double、String等。Java中规定,对象数据类型的关键字都要以答谢字母开头。对象数据类型既有值又有ID,为了和上面的基本数据类型形成对比,这里再举个例子:假如有Integer a=1和Integer b=1;那么Java来说a!=b,因为他们的ID不同。(如果单纯为了比较它们的值,可以使用equals()方法)。此外,对象数据类型中既有不可变的,也有可变的(Mutable)。其在堆中分配内存,代价相对较高。此外,以上所说的大多数对象数据类型(如Integer、Long、Boolean等)都有与之对应的基本数据类型,在定义一个该类型的变量时,应尽量使用基本数据类型而不是对象数据类型。
发表于 2020-03-01 09:45:11 回复(0)

1.array可以存储基本类型和对象类型,arraylist只能存储对象类型。2.array不能动态增加存储空间,arraylist可以。3.arraylist提供了很多方法。

发表于 2020-02-29 21:02:54 回复(0)
Array存储基本数据类型和引用类型arraylist存储引用类型 array是固定大小 的窗口,适合存入固定大小并且是同一类型的数据 arraylist适合存储元素会有变化的数据,方便s查询,如需要频繁增删使用linkedlist
发表于 2019-11-20 19:22:49 回复(0)

array支持基本数据类型和引用数据类型,array list只支持引用数据类型

array适合数据数量固定不变,查找之类的操作

arraylist可以跟随数据不断扩容,但是如果增删频繁的话使用linkedlist更好

发表于 2019-09-23 15:10:45 回复(0)

Array 容量在初始化是确定 使用期间一直不改变其大小

ArrayList 可以动态的扩展其容量 扩容倍数是原来的1.5倍 底层是判断如果当前你插入的值达到了最大容量 就会将旧的数组复制到新的数组中 新数组的容量是原来数组的1.5倍。 其中 在某索引处添加和删除节点用System.copy函数 native方法 效率高


发表于 2019-09-17 20:45:39 回复(0)

1⃣️:Array 可以包含基本数据类型和对象类型,Arraylist 只能包含对象类型。

2⃣️:Array 固定大小,Arraylist 大小动态变化。

发表于 2019-05-12 11:05:19 回复(0)