I have a list of cars
List<Car> cars = ...;
A car has an Owner
and and Owner
has a ContactNumber
Car
public class Car {
private Owner owner;
public Owner getOwner(){
return owner;
}
}
Owner
public class Owner {
private ContactNumber contactNumber;
public ContactNumber getContactNumber() {
return contactNumber;
}
}
I know I can group cars by Owners using
Map<Owner, List<Car>> groupByOwner = cars.stream().collect(groupingBy(Car::getOwner));
Is there a way I can then use streams to group by Owner
and ContactNumber
knowing that one ContactNumber
can only ever be associated with one Owner
?
How would I also do this if a ContactNumber
could be shared by multiple Owner
s?
i.e to create the below map:
Map<Owner, List<Car>> groupByOwner = cars.stream().collect(groupingBy(Car::getOwner))
Map<ContactNumber, Map<Owner, List<Car>>> groupByContactNumberAndOwner = groupByOwner...