开发者

Is creating an array and an array list the same thing in Java?

Is creating an array and creating an arraylist the same thing in Java? I hear many different stories with regard to this so if you could开发者_Python百科 point me into the right direction it would much appreciated :)


An array is a primitive structure. It is sequential memory and allocated by the JVM.

An arraylist uses an array behind it, but you don't have direct access to it. It can "grow" while a regular array cannot.

Basically, an arraylist starts (by default) with an array of length 10 behind it, and a count of 0. So imagine you had

ArrayList<Integer> myInts = new ArrayList<Integer>();

behind this is an array like this

count = 0
array = [ null, null, null, null, null, null, null, null, null, null ]

When you go myInts.add(5); it does this

count = 1
array = [ 5, null, null, null, null, null, null, null, null, null ]

If you added more you could get this

count = 10
array = [ 5, 4, 3, 2, 1, 5, 8, 3, 0, -1 ]

And if you added one more (which would push it beyond its capacity) it would make a new array to support it

count = 11
array = [ 5, 4, 3, 2, 1, 5, 8, 3, 0, -1, 9, null, null, null, null, null, null, null, null, null ]

You can change the size of the backing array if you want to. for example:

myInts.trimToSize();

count = 11 // hasn't changed
array = [ 5, 4, 3, 2, 1, 5, 8, 3, 0, -1, 9]

myInts.ensureCapacity(15);

count = 11 // hasn't changed
array = [ 5, 4, 3, 2, 1, 5, 8, 3, 0, -1, 9, null, null, null, null,]


You can have an array of primitive types while ArrayList doesn't support the primitive types.

You can save some memory if you use Array instead of ArrayList, but will not have the extra features provided by the Java Collection Framework.


Simply put, an array can't grow where as an ArrayList can. You can even shrink or clear an ArrayList.


No, these are not the same thing.

Support for real arrays is part of the Java language and the Java Virtual Machine. There are specific instructions in the JVM instruction set to work with arrays.

An ArrayList is just a class that's part of the core Java libraries. Internally, it stores elements in a Java array. Compare it to other list implementations like LinkedList.

In practice, a List implementation like ArrayList offers more features than an array. For example, an ArrayList can have a varying size, and will re-allocate the underlying array if more space is needed.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜