Collectors.groupingBy example



import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class CollectorsGroupingFlight {
public static void main(String[] args) {
List<Animal> animals = Arrays.asList(
new Animal("Tiger","Wild"),
new Animal("Cow","Domestic"),
new Animal("Lion","Wild"),
new Animal("Goat","Domestic"),
new Animal("Dog","Wild-Domestic")
);

Map<String, List<Animal>> result = animals
.stream()
.collect(Collectors.groupingBy(Animal::getType));
System.out.println("Result: "+result);
}
}
Output:
Result: {
Wild-Domestic=[Animal [name=Dog, type=Wild-Domestic]], Wild=[Animal [name=Tiger, type=Wild], Animal [name=Lion, type=Wild]], 
Domestic=[Animal [name=Cow, type=Domestic], Animal [name=Goat, type=Domestic]]
}

Explanation:
The result produces the map with animal's type as a key and respective animals in a list as value.