Generics are widely used in object oriented programming, especially in the Java programming language, which introduced generics in version 5.0. For instance, the Java Collections Framework offers generic classes and interfaces for storing and manipulating collections of objects, such as lists, sets, maps, queues, and stacks. The Java Stream API provides a way of processing sequences of data using functional programming techniques, such as map, filter, reduce, and collect. Additionally, the Java Generics and Collections book is a comprehensive guide to using generics and collections in Java written by Maurice Naftalin and Philip Wadler. It covers the syntax, semantics, and design of generics, as well as the features and benefits of the collections framework with examples and exercises to help you master generics and collections.