2012-12-10 3 views
1

안녕하세요, 비행기에 대한 hashMap 저장소를 만들려고합니다. 그러나 내가 추가하면, 그것은 단지 하나의 비행을 인쇄 할 것입니다. 누구든지 이걸 도와 줄 수 있어요. 당신은 다음과 같이 해시 맵을 정의 할 필요가값을 덮어 쓰는 해시 맵

import java.util.Scanner; 


public class MainApp 
{ 
    private Scanner keyboard = new Scanner(System.in); 
    public static void main(String[] args) 
    { 
     new MainApp().start(); 
    } 

    public void start() 
    { 
     Airline aerLingus = new Airline("AerLingus"); 
     PlaneStore planeStore = new PlaneStore("Aer Lingus"); 

     Flight p1 = new Flight("Aer Lingus","A01", 150.5, 10.5, 500, Flight.AIRPLANETYPE.AIRBUS); 
     Flight p2 = new Flight("Aer Lingus","B01", 50.3, 1.5, 91, Flight.AIRPLANETYPE.CORPORATE); 
     Flight p3 = new Flight("Aer Lingus","C01", 12.2, -3.1, 56, Flight.AIRPLANETYPE.AIRBUS); 


     Flight p4 = new Flight("Ryan Air","D01", 10.5, 1.5, 430, Flight.AIRPLANETYPE.PRIVATE); 
     Flight p5 = new Flight("Ryan Air","E01", 0.3, 2.1, 101, Flight.AIRPLANETYPE.CORPORATE); 
     Flight p6 = new Flight("Ryan Air","F01", 2.2, -3, 291, Flight.AIRPLANETYPE.AIRBUS); 
     planeStore.addFlight("",p1); 
     planeStore.addFlight("",p2); 
     planeStore.addFlight("",p3); 
     planeStore.print(); 

     aerLingus.add(planeStore); 
     aerLingus.add(planeStore); 
     aerLingus.add(planeStore); 

     aerLingus.printPlane(); 
    } 

} 

import java.util.TreeMap; 


public class PlaneStore 
{ 
    private String airlineName; 
    private TreeMap<String,Flight> planeMap; 


    public PlaneStore(String airlineName) 
    { 
     this.airlineName = ""; 
     planeMap = new TreeMap<String,Flight>(); 
    } 


    public String getAirlineName() { 
     return airlineName; 
    } 


    public TreeMap<String, Flight> getFlightList() { 
     return planeMap; 
    } 
    public void addFlight(String airline,Flight flight) 
    { 
     planeMap.put(airline, flight); 
    } 

    // --------------------------------------------------------------------------------------- 
    // Name: Print. 
    // --------------------------------------------------------------------------------------- 
    public void print() 
    { 
     System.out.println("\n********Student's in the Company.********"); 
     for (Flight flight : planeMap.values()) { 
      // System.out.println(employee); to print the toString of Employee 
      // class 
      // or: 
      System.out.println("Airline:\t" + flight.getAirline()); 
      System.out.println("Flight Number:\t" + flight.getFlightNumber()); 
      System.out.println("Fuel Remaining:\t" + flight.getFuelRemaining()); 
     } 

    } 


} 
public class Flight 
{ 
    private String airline; 
    private String flightNumber; 
    private double fuelRemaining; 
    private double overdue; 
    private int passengerNumber; 
    private AIRPLANETYPE planeType; 

    public enum AIRPLANETYPE 
    { 
     AIRBUS("1"), CORPORATE("2"), PRIVATE("3"); 

     private String planeName; 

     private AIRPLANETYPE(String planeName) 
     { 
      this.planeName = planeName; 
     } 
    } 


    public Flight(String airline, String flightNumber, double fuelRemaining, 
      double overdue, int passengerNumber, AIRPLANETYPE planeType) 
    { 
     super(); 
     this.airline = airline; 
     this.flightNumber = flightNumber; 
     this.fuelRemaining = fuelRemaining; 
     this.overdue = overdue; 
     this.passengerNumber = passengerNumber; 
     this.planeType = planeType; 
    } 

    public String getAirline() { 
     return airline; 
    } 

    public void setAirline(String airline) { 
     this.airline = airline; 
    } 

    public String getFlightNumber() { 
     return flightNumber; 
    } 

    public void setFlightNumber(String flightNumber) { 
     this.flightNumber = flightNumber; 
    } 

    public double getFuelRemaining() { 
     return fuelRemaining; 
    } 

    public void setFuelRemaining(double fuelRemaining) { 
     this.fuelRemaining = fuelRemaining; 
    } 

    public double getOverdue() { 
     return overdue; 
    } 

    public void setOverdue(double overdue) { 
     this.overdue = overdue; 
    } 

    public int getPassengerNumber() { 
     return passengerNumber; 
    } 

    public void setPassengerNumber(int passengerNumber) { 
     this.passengerNumber = passengerNumber; 
    } 

    public AIRPLANETYPE getPlaneType() { 
     return planeType; 
    } 

    public void setPlaneType(AIRPLANETYPE planeType) { 
     this.planeType = planeType; 
    } 


    public String toString() 
    { 
     return "Flight [airline=" + airline + ", flightNumber=" + flightNumber 
       + ", fuelRemaining=" + fuelRemaining + ", overdue=" + overdue 
       + ", passengerNumber=" + passengerNumber + ", planeType=" 
       + planeType + "]"; 
    } 




} 
+0

HashMap은 어디에 있습니까? – NPE

+0

여기서 정확히 'hashmap'은 무엇입니까? 나에게 맞는 키 이름으로 비행 이름을 정의 했어야합니다 ... 정의 된 클래스 중 하나에서 사용했습니다. – mtk

+0

hashmap은 분명히 planestore 객체에 캡슐화되며, add add map에 추가를 처리합니다. – DarthVader

답변

6

HashMap은 키 - 값 쌍을 저장할 수있는 데이터 구조입니다. 열쇠가 유일해야합니다. 그렇지 않으면 같은 키를 가진 값을 덮어 씁니다.

값을 추가하고 찾는 복잡성이 일정하기 때문에이 데이터 구조를 사용하면 값을 빠르게 추가하고 찾을 수 있습니다. 그러나 단점은 키를 한 번만 추가 할 수 있다는 것입니다.

0

: 여기 내 코드입니다

Map<String, List<Flight>> map = new TreeMap<String, List<Flight>>(); 

을 한 다음 다음과 같이 항공편의 새 목록을 만들 필요가 각 비행 이름 :

map.get("foo") = new ArrayList<Flight>(); 

map.get("foo").add(Flight); 

위의 코드는 수비가 필요합니다. 목록이 없으면 만들 필요가 있습니다. 그렇지 않으면 예외가 생깁니다. 또한 비행 키당 하나의 목록 만 생성되도록하십시오. 더 코드 게시에 응답

+0

항공사를 추가해야합니다. 여기서 Lingus는 airlineName으로 설정됩니다. 그러면 tht는 덮어 씌울 것입니까? – Pendo826

+0

이것은 유효한 자바 구문이 아닙니다 :'map [ "foo"] = ...'. –

+0

이 수정되었습니다. 죄송합니다. – DarthVader

0

편집 :

당신이 PlaneStore.addPlane() 당신이 빈 키를 제공하고 있습니다 할 때마다. 해시 맵은 모든 객체에 고유 한 키를 제공하는 경우에만 유용합니다. 그렇지 않으면 모든 평면이 이전 평면을 덮어 씁니다. 인쇄 할 때 단일 개체 만 볼 수있는 이유가 여기에 있습니다. 모든 비행기에 고유 키, 아마도 꼬리 번호 또는 이와 유사한 것을 제공하면 모든 객체를 검색 할 수 있어야합니다.