【发布时间】:2019-04-22 16:49:57
【问题描述】:
我有一个带有车辆属性的 Arraylist,我需要将它们存储在“停车场插槽”中,因此我决定使用 HashMap 来存储带有车辆注册的车辆插槽,例如“1 = VEHICLE”。
在我的代码中,我有它,以便在从用户输入获取所需信息后添加一个 Integer 和一个带有 put 语句的 Vehicle,它适用于第一个输入,但之后它只是被替换,我将如何去关于循环 put() 或循环以将内容添加到地图中?
(我还计划让我的 HashMap 创建和填充成为我调用的函数,这只是一个临时的事情,直到我弄清楚或意识到这是不可能的。)
public void carInfo(Vehicle tempVehicle, parkingSpace vehicle) {
HashMap<Integer, Vehicle> hash_map = new HashMap<Integer, Vehicle>();
array = new MCP();
System.out.println("Please enter number plate: ");
input = new Scanner(System.in);
String plate = input.nextLine();
System.out.println("Please enter car make: ");
input = new Scanner(System.in);
String make = input.nextLine();
System.out.println("How would you best describe your Vehicle? ");
System.out.println("(Car, Small Van, Tall Van, Long Van, Coach, Motorbike)");
type = new Scanner(System.in);
String type1 = input.nextLine();
if (type1.equalsIgnoreCase(vehicleType.CAR.toString())) {
tempVehicle.setPlate(plate);
tempVehicle.setCarMake(make);
tempVehicle.setVehicle(vehicleType.CAR);
inv.createInvoice();
tempVehicle.setInvoiceNumber(inv.invoiceNumber);
array.addStandard(tempVehicle);
hash_map.put(test++, tempVehicle);
System.out.println(hash_map.toString());
我希望添加许多输入并得到类似的结果:
1 = Vehicle
2 = Vehicle
相反,我只是得到
1 = Vehicle
然后它会替换第一辆车然后放弃
2 = Vehicle
我已经研究并意识到这是因为我只有 1 个 put 所以它只是替换了当前映射到那里的东西,我只是不确定如何循环它来解决这个问题。
【问题讨论】:
-
请提供完整的代码示例:stackoverflow.com/help/mcve
-
您每次调用
carInfo时都会创建一个新的HashMap,在其中添加一个条目,然后打印它,那么您为什么会期望一张包含多个条目的地图。将hash_map移动为一个字段,而不是一个局部变量,因此它会保留每次调用carInfo方法的内容。