Start here. This is the direct spoken answer to practice first.
Overview
Both implement List, but their storage models make different operations and traversal patterns expensive.
ArrayList stores references in a resizable array, so indexed reads are fast and iteration has good memory locality. LinkedList stores linked nodes, so finding an element by index requires traversal. Inserting into a linked list is cheap only after code already has an iterator or node position; searching for that position is still linear. For most application lists, ArrayList is the default because reads and iteration dominate.