■ Lists allow duplicates. (Sets don’t). Both Lists and Sets allow null elements.
■ The older Lists are Vector and Stack. The newer ones are ArrayList (unordered, much like Vector) and LinkedList (also unordered, but with extra methods for operating on the list's ends, somewhat like Stack)
■ Note: There is no "sorted list"
implementation for Lists,
as TreeSet nicely
provides for Set, where
the items are automatically put into order for you. See sorting collections
■ Here is how methods operate on the ends and on the middle of a list.
When you build a list, think of making a stack of pancakes. The very first pancakes go onto the bottom of the stack and they stay there. If you casually remove pancakes or add more, you are dealing with the easily accessible pancakes from the top of the stack. The last one you add is at the top.

That's how the Java API documentation (and this site) refers
to a list - the top is the end, the last item you
added. This is important because the top will not have index 0! The item
with index position 0 is always down at
the bottom or start of a list. This makes all Java list processing LIFO
(last-in first-out) by default.
Creating First-in First-Out (FIFO)
Lists. For FIFO
processing, you need use the methods shown above with “first” in their
names.