首页 > 解决方案 > 我将如何根据 Value 删除/替换 HashMap 值?

问题描述

我有一个 HashMap,它显示一个停车位作为键,一个车牌作为值,我有它,以便用户在取回车辆时输入车辆的车牌,然后我想删除/ 替换他们刚刚输入的车牌值。

例如,输出将来自:

Parking Space: 1, Vehicle Registration: ABCD123

对此:

Parking Space: 1, Vehicle Registration: "Empty" / null

tempVehicle.plate 是一个字符串,其中包含用户输入的车牌。

    public int key = 1;
    HashMap<Integer, String> zone_1 = new HashMap<Integer, String>();

    public void addToZone1(Vehicle tempVehicle){
        if (key < 5) {
            zone_1.put(key, tempVehicle.plate);
            key++;
            System.out.println(zone_1.toString());
        }
        else {
            System.out.println("There is no more room in this Zone!");
        }

    }

这是我唯一能想到的,我希望这是可能的,我想我应该事先看一下。

    public void pickingVehicleUp() {
        System.out.println("Please enter number plate: ");
        input = new Scanner(System.in);
        String PLATE = input.nextLine();

        if (zone_1.containsValue(PLATE)) {

        }
    }

我希望添加到 if 语句或完全更改,无论我需要做什么来完成这项工作,提前谢谢

标签: javaif-statementhashmapuser-input

解决方案


您可以按值获取密钥,如果存在则将其删除。

int key=-zone_1.stream()
      .filter(e -> e.getValue().equals(PLATE))
      .map(Map.Entry::getKey)
      .findFirst()
      .orElse(null);
zone_1.remove(key);

但我建议使用 PLATE 作为键,因为您正在基于它进行操作。

希望能帮助到你


推荐阅读