如何打印出哈希图存储


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 airline1 = 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.add(p1);
        planeStore.add(p2);
        planeStore.add(p3);
        planeStore.print();
        airline1.add(planeStore);
        airline1.add(planeStore);
        airline1.add(planeStore);
        airline1.printPlane();
    }
}
import java.util.HashMap;

public class Airline 
{
    private String airlineName;
    private HashMap<String, PlaneStore> map;
    public Airline(String airlineName)
    {
        this.airlineName = "";
        map = new HashMap<String, PlaneStore>();
    }
    public void add(PlaneStore plane)
    {
        map.put(airlineName, plane);
    }
    public void remove(String flight)
    {
        map.remove(flight);
    }
    public void printPlane()
    {
        System.out.println("n********Flight List********");
        for (PlaneStore plane: map.values()) {
             //System.out.println(plane);
            // class
            // or:
            System.out.println(airlineName);
            System.out.println(plane.toString());
        }
    }
}

嘿,我想打印出飞机商店。 飞机存储包含字符串和航班的哈希图。 这就是flight.add/print进入主应用程序的地方。 但是我现在希望航空公司和航班并行打印,所以我放了一个航空公司商店,我试图打印出飞机商店和航空公司,但我得到的只是一个内存地址,任何人都可以帮助我解决这个问题。

如果你得到类似 MyClass@abcdef 的东西,那么你需要像这样覆盖toString MyClass

public class MyClass {
    ...
    @Override
    public String toString() {
        return "My class"; // Make a string here that you want to display
    }
}

例如,如果PlaneStore具有字段的int planeCountString name,则可以执行以下操作:

@Override
public String toString() {
    return "Plane store | Name: " + name + ", planes: " + planeCount;
}

你可以通过以下方式做到这一点:

System.out.println(map.toString());

这与

System.out.println(map);

然后,为了避免你提到的"记忆地址":
将方法添加到普通商店

public String toString() {
    return this.storeName; // or similar, 
}

这是因为 Map 可以通过调用每个键和值的 toString() 方法打印出其内容。

如果这个输出不够好,你必须自己迭代:使用map.entrySet()并对其进行迭代。

因为你似乎是编程新手,所以我会给你他的答案:

public class PlaneStore {
    private String name;
    ...
    public String toString() {
        return name;
    }
}

尝试使用 Apache ToStringBuilder 类。但当然 toString() 也会有所帮助。有关 ToStringBuilder 的更多信息

最新更新