Source: https://www.rose-hulman.edu/class/csse/csse221/current/Capsules/Summaries/07ArraysAndArrayListsSec2.pdf