

Each node contains its element and two pointers: a link to the previous node and the link to the next node.

The entire list structure thus consists of mutually connected nodes. In order to store element B, it's not enough to just store its value as you would with an ArrayList.Ī pointer to the previous and the next element is also needed in order for the linked list to be traversable. It is a small internal class that serves as a wrapper around each element. LinkedList needs a custom data structure. The fifth element, for example, points both to the fourth element and the sixth element.ĪrrayList contains a single array for data storage. Since this is a doubly-linked list, each element also points to its predecessor. The first element points to the second one, which points to the third one, and so forth. LinkedList doesn't have an array but a double-ended queue of mutually-connected elements instead. If an element is removed, the size is decreased. If an element is added, the size is increased. This means that ArrayList internally contains an array of values and a counter variable to know the current size at any point. A LinkedList is a doubly-linked list/queue implementation. Inner Workings of ArrayList and LinkedListĪn ArrayList is a resizable array that grows as additional elements are added. However, the LinkedList also implements the Queue interface. Since it's an interface, it simply provides a list of methods that need to be overridden in the actual implementation class.ĪrrayList and LinkedList are two different implementations of these methods. In Java, List is an interface under the java.util package. Lists oftentimes go hand in hand with other mechanisms such as Java Streams which offer simple yet effective ways for iteration, filtering, mapping, and other useful operations. They are convenient because they enable easy manipulation of elements (such as insertion or fetching) and simple iteration of the entire collection. Lists are therefore ordered collections (unlike sets) which also allow duplicates. This means that each element of the list has both a predecessor and a successor (except the first and the last, of course - they only have one of each).

Lists are data structures used for sequential element storage. Knowing which implementation of a List to use in which situation is an essential skill. In this article, we'll go through both of these implementations, observe their inner workings and discuss their performance. Should you choose an ArrayList or a LinkedList? What's the difference between these two? In Java, a common question when using a List implementation is: Lists are some of the most commonly used data structures.
