Java 哈希映射覆盖值

Java 哈希映射覆盖值,java,hashmap,Java,Hashmap,嘿,我想为飞机做一个hashMap存储。但当我添加时,它只会打印出一个航班。有人能帮我吗。 这是我的密码: import java.util.Scanner; public class MainApp { private Scanner keyboard = new Scanner(System.in); public static void main(String[] args) { new MainApp().start(); }

嘿,我想为飞机做一个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 + "]";
    }




}
import java.util.Scanner;
公共类MainApp
{
专用扫描仪键盘=新扫描仪(System.in);
公共静态void main(字符串[]args)
{
新建MainApp().start();
}
公开作废开始()
{
航空公司aerLingus=新航空公司(“aerLingus”);
PlaneStore PlaneStore=新PlaneStore(“爱尔兰航空”);
航班p1=新航班(“爱尔兰航空公司”、“A01”、150.5、10.5500、Flight.AIRPLANETYPE.AIRBUS”);
航班p2=新航班(“爱尔兰航空”、“B01”、50.3、1.5、91,航班号AIRPLANETYPE.CORPORATE”);
航班p3=新航班(“爱尔兰航空”、“C01”、12.2、-3.1、56,航班号AIRPLANETYPE.AIRBUS”);
航班p4=新航班(“瑞安航空”、“D01”、10.5、1.5、430,航班号AIRPLANETYPE.PRIVATE);
航班p5=新航班(“Ryan Air”、“E01”、0.3、2.1、101,Flight.AIRPLANETYPE.CORPORATE”);
航班p6=新航班(“瑞安航空”,“F01”,2.2,-3291,航班号AIRPLANETYPE.AIRBUS”);
planeStore.addFlight(“,p1);
planeStore.addFlight(“,p2);
planeStore.addFlight(“,p3);
planeStore.print();
aerLingus.add(planeStore);
aerLingus.add(planeStore);
aerLingus.add(planeStore);
aerLingus.printPlane();
}
}
导入java.util.TreeMap;
公营飞机店
{
私有字符串airlineName;
私人树状图平面图;
公共平面存储(字符串airlineName)
{
this.airlineName=“”;
planeMap=新树映射();
}
公共字符串getAirlineName(){
返回airlineName;
}
公共树映射getFlightList(){
返回平面图;
}
公共航班(字符串航空公司、航班航班)
{
平面图(航空公司、航班);
}
// ---------------------------------------------------------------------------------------
//姓名:打印。
// ---------------------------------------------------------------------------------------
公开作废印刷品()
{
System.out.println(“\n**********学生在公司。********”);
对于(航班:planeMap.values()){
//System.out.println(employee);打印employee的toString
//阶级
//或:
System.out.println(“Airline:\t”+flight.getAirline());
System.out.println(“航班号:\t”+Flight.getFlightNumber());
System.out.println(“剩余燃油:\t”+flight.getFuelRestaining());
}
}
}
公务舱航班
{
私人航空公司;
私有字符串flightNumber;
私人双燃料电池;
私人双逾期;
私人国际旅客号码;
私人飞机类型;
公共枚举AIRPLANETYPE
{
空客(“1”)、公司(“2”)、私人(“3”);
私有字符串名称;
专用AIRPLANETYPE(字符串planeName)
{
this.planeName=planeName;
}
}
公共航班(字符串航空公司、字符串航班号、双倍剩余燃油、,
双倍过期,国际乘客号,AIRPLANETYPE planeType)
{
超级();
this.airline=航空公司;
this.flightNumber=flightNumber;
this.fuelresisting=fuelresisting;
这个.过期的=过期的;
this.passengerNumber=passengerNumber;
this.planeType=planeType;
}
公共字符串getAirline(){
回程航空公司;
}
公共航空公司(字符串航空公司){
this.airline=航空公司;
}
公共字符串getFlightNumber(){
返回航班号;
}
public void setFlightNumber(字符串flightNumber){
this.flightNumber=flightNumber;
}
公共双getfuelreserving(){
返回剩余燃料;
}
公共无效设置燃料剩余(双燃料剩余){
this.fuelresisting=fuelresisting;
}
公共服务{
逾期归还;
}
逾期公共服务(双倍逾期){
这个.过期的=过期的;
}
public int getPassengerNumber(){
返回乘客号码;
}
公共无效设置密码(int密码){
this.passengerNumber=passengerNumber;
}
公共AIRPLANETYPE getPlaneType(){
返回平面类型;
}
公共void setPlaneType(AIRPLANETYPE planeType){
this.planeType=planeType;
}
公共字符串toString()
{
返回“Flight[airline=“+airline+”,flightNumber=“+flightNumber
+“,FuelRestaining=“+FuelRestaining+”,过期=“+过期
+“,passengerNumber=“+passengerNumber+”,planeType=”
+planeType+“]”;
}
}

您需要按如下方式定义哈希映射:

Map<String, List<Flight>> map = new TreeMap<String, List<Flight>>();
map.get("foo") = new ArrayList<Flight>();

map.get("foo").add(Flight);
Map Map=newtreemap();
然后,对于每个航班名称,您需要创建一个新的航班列表,如下所示:

Map<String, List<Flight>> map = new TreeMap<String, List<Flight>>();
map.get("foo") = new ArrayList<Flight>();

map.get("foo").add(Flight);
map.get(“foo”)=newArrayList();
地图。获取(“foo”)。添加(航班);

对于上面的代码,您需要防御性的,如果没有列表,您需要创建一个,否则您将得到一些异常。此外,确保每个航班钥匙只创建一个列表

您需要如下定义hashmap:

Map<String, List<Flight>> map = new TreeMap<String, List<Flight>>();
map.get("foo") = new ArrayList<Flight>();

map.get("foo").add(Flight);
Map Map=newtreemap();
然后,对于每个航班名称,您需要创建一个新的航班列表,如下所示:

Map<String, List<Flight>> map = new TreeMap<String, List<Flight>>();
map.get("foo") = new ArrayList<Flight>();

map.get("foo").add(Flight);
map.get(“foo”)=newArrayList();
地图。获取(“foo”)。添加(航班);

对于上面的代码,您需要防御性的,如果没有列表,您需要创建一个,否则您将得到一些异常。此外,确保每个航班钥匙只创建一个列表

编辑以响应进一步的代码发布:

每次执行
PlaneStore.addPlane()
操作时,都会提供一个空白键。Hashmap只有在为每个对象提供唯一键时才有用。否则,每个平面将覆盖上一个平面。这就是为什么打印时只看到