【问题标题】:How to print out hashmap store如何打印出 hashmap 存储
【发布时间】:2012-11-28 07:23:57
【问题描述】:
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 进入主应用程序的地方。但我现在希望航空公司和航班并行打印,所以我放了一个航空公司商店,我试图把飞机商店和航空公司一起打印出来,但我得到的只是一个内存地址,任何人都可以帮我解决这个问题。

【问题讨论】:

  • @Brian 我如何覆盖它?
  • 这可能会有所帮助:stackoverflow.com/q/10120273/422353
  • @Pendo826 如下所示,将方法 toString() 添加到类 PlainStore() 或者您没有该类的源代码?

标签: java hashmap


【解决方案1】:

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

【讨论】:

  • 广泛使用它,你为什么不使用它?
  • 它在一行中打印所有内容,一个包含 20 个元素的列表,每个元素有 8 个元素,无法阅读。自定义读取总是更智能
【解决方案2】:

因为您似乎是编程新手,所以我将把答案交给您:

public class PlaneStore {

    private String name;
    ...

    public String toString() {
        return name;
    }
}

【讨论】:

    【解决方案3】:

    你可以这样做:

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

    相同
    System.out.println(map);
    

    那么,为了避免你提到的“内存地址”:
    向 PlainStore 添加一个方法

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

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

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

    【讨论】:

    • 我不明白 storeName 是什么。我尝试输入地图名称,但出现错误。
    • 每个类都应该有一个 toString() 方法:您要输出包含 PlainStore 对象的地图,因此在 PlainStore 或您要打印的任何其他类中:添加一个 toString() 方法,该方法返回一个表示该类数据的字符串;贴出PlainStore的代码。
    【解决方案4】:

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

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多