Java 使用for循环编写方法

Java 使用for循环编写方法,java,for-loop,set,Java,For Loop,Set,我是Java新手,我有一个建模问题 我有一个名为CarRentalCompany的类,它包含一组汽车对象。与每个Car对象关联的是一组Reservation对象。在Car类中,我有一个名为getAllReservations的方法,它将该车的所有预订作为一个集合返回。每个预订对象都有一个与之关联的carRenter,存储为字符串(仅为名称)。因此,我在Reservation类中有一个方法getCarRenter,它返回一个字符串 下面您可以找到我在CarRentalCompany类中编写的一个方

我是Java新手,我有一个建模问题

我有一个名为CarRentalCompany的类,它包含一组汽车对象。与每个Car对象关联的是一组Reservation对象。在Car类中,我有一个名为getAllReservations的方法,它将该车的所有预订作为一个集合返回。每个预订对象都有一个与之关联的carRenter,存储为字符串(仅为名称)。因此,我在Reservation类中有一个方法getCarRenter,它返回一个字符串

下面您可以找到我在CarRentalCompany类中编写的一个方法的代码,该类根据承租人名称提供一组预订对象

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;
}

您可以使用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);
}

你已经试过什么了?
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);
}