Generics was a feature that was added to Java with version 5. Basically, generic programming allows the developer to use types-to-be-named-later in their code. The collections classes is one of the largest used libraries in core Java that were ported to use it.
Generics can be used without the use of collections. Collections can be used without the use of generics. They are independent of each other. However coupling collections with light generics is a good idea. It prevents runtime bombs where you added something that you did not want to in the collection