行程类通过以下成员存储有关行程的信息:
•一个名为flight的私有ArrayList数据字段,其中包含该行程的航班 出发时间的递增顺序。 (提示:您无需进行排序。)
•一个构造函数,它使用ArrayList类型的指定航班创建行程。
•一种名为getTotalFlightTime()的方法,该方法以分钟为单位返回行程的总飞行时间。 (提示:为每个Flight对象调用getFlightTime()方法。)
•一种名为getTotalTravelTime()的方法,该方法以分钟为单位返回从 行程中首个航班的出发时间至最后一个航班的到达时间。假设所有 时间在同一时区。
package que6;
/**
*
* @author vpi764
*/
import java.util.ArrayList;
import java.util.GregorianCalendar;
public class TestFlightItinerary {
public static void main(String[] args) {
lic static void main(String[] args) {
ArrayList<Flight>flights = new ArrayList<>();
Flight F1 = new Flight("US230", new GregorianCalendar(2014, 5, 5, 5, 5, 0), new GregorianCalendar(2014, 5, 5, 6, 15, 0));
Flight F2 = new Flight("US235", new GregorianCalendar(2014, 5, 5, 6, 55, 0), new GregorianCalendar(2014, 5, 5, 7, 45, 0));
Flight F3 = new Flight("US237", new GregorianCalendar(2014, 5, 5, 9, 35, 0), new GregorianCalendar(2014, 5, 5, 12, 55, 0));
flights.add(F1);
flights.add(F2);
flights.add(F3);
}
}
class Flight{
private String flightNo;
private GregorianCalendar departureTime;
private GregorianCalendar arrivalTime;
//Constructor
Flight(String SpecNo,GregorianCalendar SpecDtime ,GregorianCalendar SpecAtime ){
this.flightNo = SpecNo;
this.departureTime = SpecDtime;
this.arrivalTime = SpecAtime;
}
//Getters
public String GetFlightNo() {
return flightNo;
}
public GregorianCalendar GetDtime() {
return departureTime;
}
public GregorianCalendar GetAtime() {
return arrivalTime;
}
//setters
// If we don't use setter the could would still work because we are getting input in constructor with parameters
public void SetFlightNo(String Number) {
flightNo = Number;
}
public void SetDtime(GregorianCalendar Dtime) {
departureTime = Dtime;
}
public void SetAtime(GregorianCalendar Atime) {
arrivalTime = Atime;
}
public long getTimeinMillis() {
return (arrivalTime.getTimeInMillis() - departureTime.getTimeInMillis());
}
// getFlightTime method
public long getFlightTime() {
return getTimeinMillis() / (60 * 1000);
}
}
class Itinerary {
ArrayList<Flight> flights = new ArrayList<>();
public Itinerary(){
this.flights = flights;
}
public long getTotalFlightTime(ArrayList<Flight> flights){
}
public long getTotalTravelTime(){
}
}
答案 0 :(得分:1)
ArrayList保持添加元素的顺序。可能就是这样。
答案 1 :(得分:0)
如果我正确理解了说明,则无需对ArrayList进行排序。您所需要做的就是定义一个接受一个FlightArray的构造函数。
您的行程表应该是:
class Itinerary {
ArrayList<Flight> flights; // no need to instantiate, flights passed in as arg
public Itinerary(ArrayList<Flight> flights) {
this.flights = flights;
}
public long getTotalFlightTime(){
// Do stuff
}
public long getTotalTravelTime(){
// Do Stuff
}
}
然后在您的主要方法中添加以下内容:
ArrayList<Flight> flights = new ArrayList<>();
flights.addAll(F1, F2, F3);
Itinerary myItinerary = new Itinerary(flights);