Learn the basic concepts and functions that you will need to build fully functional programs with the popular programming language, Java. This course is about generics in the main. You will lern the basics of generic types, generic methods, type parameters and the theoretical background concerning these topics. This is a fundamental part of Java so it is definitly worth learning. Section 1 - Generic and Generic Programmingwhy to use generics and generic programmingSection 2 - Basic Genericsgeneric typesgeneric methodsfundamentals of generics and generic programmingSection 3 - Bounded Type Parametersbounded type parametersSection 4 - Type Inferencewhat is type inferenceSection 5 - Wildcardswhat are wildcards?lower bounded wildcardsupper bounded wildcardswildcards and bounded type parametersSection 6 - Type Erasurewhat is type erasure?bridge methods and type erasureSection 7 - Collections Frameworkthe collections frameworkmeasuring the running time of algorithmswhat are data structures?Section 8 - ListsArrayList and LinkedListperformance comparison of LinkedLists and ArrayListsVectorsStacksSection 9 - Queueswhat are queues?PriorityQueuesArrayDequesSection 10 - Mapshashing based data structures and hash-functionsHashMaps and LinkedHashMapsbalanced binary search trees and red-black treesTreeMapsSection 11 - Setswhat are sets?HashSets, LinkedHashSets and TreeSetsSection 12 - Sorting Collectionssorting arrays and collectionsComparable and Comparator interfacessorting with lambda expressionsSection 13 - Stream APIstreamssequential streams and parallel streamsmap() and flatMap()reduce()Section 13 - Reflectionwhat is reflection?annotations and reflectionreflection and frameworks (such as Spring)Learning the fundamentals of Java is a good choice and puts a powerful and tool at your fingertips. Java is easy to learn as well as it has excellent documentation, and is the base for all object-oriented programming languages. Jobs in Java development are plentiful, and being able to learn Java will give you a strong background to pick up other object-oriented languages such as C++, or C# more easily.