在代码的第一部分中,我从文件中读取数据并将字段放入这样的变量中
Date date = rs.getDate(1);
Integer flightnumber = rs.getInt("FlightNumber");
Integer passengers = rs.getInt("Passengers");
因此,我需要将这些变量放入 ArrayList
中,然后编写一个方法,将两个变量与我创建的列表中的变量进行比较,并返回一个 int 作为乘客。
public int getPassengerNumbersFor(int flightNumber, LocalDate date)
棘手的部分是我无法创建任何新类,并且没有实现任何 getFlightNumber
/getDate
,也不允许我编写代码。有人告诉我可以使用 HashMap
,但在这种情况下,我将有一个键和两个值,这是行不通的(passengers
是键,flightnumber
和 date
可能是值)。
如何存储这 3 个值,然后编写我的方法?
最佳答案
如果你被“允许”创建类,我会建议一个不可变的类:
public class Flight {
private final LocalDate localDate;
private final int number;
private final List<Passenger> passengers;
public Flight(LocalDate localDate, int number, List<Passenger> passengers) {
this.localDate = localDate;
this.number = number;
this.passengers = List.copyOf(passengers);
}
public LocalDate getLocalDate() {
return localDate;
}
public int getNumber() {
return number;
}
public List<Passenger> getPassengers() {
return passengers;
}
public int getPassengersNumber() {
return passengers.size();
}
...
}
注意新的 Date-Time API 的用法.
然后您可以为所有航类选择另一个舱位:
public class Flights {
private final List<Flight> flights;
public Flights(List<Flight> flights) {
this.flights = new ArrayList<>(flights);
}
public Flight getFlight(LocalDate localDate, int number) {
return flights.stream()
.filter(flight -> flight.getLocalDate().equals(localDate))
.filter(flight -> flight.getNumber() == number)
.findAny()
.orElseThrow(InvalidFlightException::new);
}
public void addFlight(Flight flight) {
flights.add(flight);
}
...
}
关于java - 我应该将这些数据加载到什么数据结构中以及如何加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59648357/