我是Java的新手,我有一个建模问题。
我有一个名为CarRentalCompany的类,它包含一组Car对象。对于每个Car对象,都会关联一组Reservation对象。在Car类中,我有一个名为getAllReservations的方法,它将该汽车的所有预订作为Set返回。每个Reservation对象都有一个与之关联的carRenter,存储为String(只是一个名称)。因此,我在Reservation类中有一个方法getCarRenter,它返回一个String。
下面你可以找到我在CarRentalCompany类中编写的方法的代码,它通过renter name给出一组Reservation对象。
public Set<Reservation> getReservationsBy(String renter) {
Set<Reservation> res = new HashSet<Reservation>();
for(Car c : cars) {
for(Reservation r : c.getAllReservations()) {
if(r.getCarRenter().equals(renter))
res.add(r);
}
}
return res;
}
我现在的问题是:我如何在CarRentalCompany类中编写一个方法,该方法返回对该租赁公司进行最多预订的租用者名称?
该方法必须如下所示:
public String getBestCustomer(){
??
}
答案 0 :(得分:0)
您可以使用Streams构建频率图并返回计数最高的频率图:
public String getBestCustomer() {
return cars.stream()
.map(Car::getAllReservations)
.flatMap(Set::stream)
.collect(Collectors.groupingBy(Reservation::getCarRenter, Collectors.counting()))
.entrySet()
.max(Map.Entry.comparingByValue())
.map(Map.Entry::getKey)
.orElse(null);
}