我如何知道是使用数组还是arraylist?

时间:2014-07-21 08:40:36

标签: java arrays oop arraylist

是什么决定是否应该使用另一个?

我曾经认为决定因素是你是否知道你要存储的东西的大小,但我认为可能还有更多的东西。

5 个答案:

答案 0 :(得分:3)

  • 当您知道集合的确切大小并且不希望添加/删除元素时使用数组。

  • 当您不知道集合的确切大小时,请使用ListArrayList),并且您希望在某些时候更改它。

  • 如果您使用的是Java8,则会有Stream API,这有助于在使用集合时显着减少样板代码。这是ArrayList(以及所有收藏集和地图)的另一个优势。

更多信息:

答案 1 :(得分:3)

更多差异:

  • Java中Array和ArrayList的主要区别在于Array是固定长度的数据结构,而ArrayList是variable length Collection类。一旦在Java中创建,您就无法更改Array的长度,但ArrayList在满员时根据容量和负载因子重新调整大小。由于ArrayList在Java内部由Array支持,因此ArrayList中的任何调整大小操作都将slow down performance,因为它涉及创建新数组并将内容从旧数组复制到新数组。

  • Java中Array和ArrayList之间的另一个区别是你不能将Generics与Array一起使用,因为如果你试图存储,Array实例知道它可以容纳什么类型的类型并抛出ArrayStoreException不能转换为Array类型的类型。 ArrayList允许您使用Generics to ensure type-safety

  • ArrayList和Array之间的另一个主要区别是,您无法在ArrayList中存储primitives,它只能包含对象。而Array可以包含Java中的基元和对象。虽然Java 5的Autoboxing可能会给你一个在ArrayList中存储基元的印象,但它实际上会自动将基元转换为Object。

  • Java提供了add()方法将元素插入到ArrayList中,你可以简单地使用赋值运算符将元素存储到Array中,例如为了将Object存储到指定位置。

  • Array与ArrayList的另一个不同之处在于您可以创建ArrayList without specifying size的实例,Java将创建具有默认大小的Array List,但是必须在直接或间接创建时提供Array的大小在创建Array时初始化Array。顺便说一下,你也可以在创建时初始化ArrayList。

答案 2 :(得分:2)

除非速度至关重要(真的关键,就像每微秒计数一样),尽可能使用ArrayList。它使用起来非常简单,这通常是最重要的考虑因素。

答案 3 :(得分:0)

通常,我使用ArrayList而不是数组,因为它们提供了许多非常有用的方法。我认为如果性能非常重要,可以使用数组,在非常特殊的情况下。

答案 4 :(得分:0)

数组是固定的,ArrayList是可增长的。如果元素的数量是固定的,则使用数组 收集实现的一大好处是它们为您提供了很大的灵活性。因此,根据您的需要,您可以将List表现为ArrayList或LinkedList等。另外,如果你看一下Collection API,你会发现几乎所有你需要做的事情都有方法。