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