LinkedList
An array (and ArrayList) stores its elements in one contiguous block of memory,
back to back. A LinkedList takes a completely different approach: instead of one
block of memory, it stores each element in its own small object, called a node,
and each node holds a reference (a "link") to the next node in the list.
Think of it like a conga line: each node only knows about the node directly behind it, but following the chain from node to node gets you through the entire list.