我有一个哈希图,将停车位显示为钥匙,将车辆号牌显示为值,我有它,以便用户在取回车辆时输入车辆的车牌,然后我想删除/替换他们刚刚输入的车牌值。
例如,输出将从:
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 语句或完全更改,无论我需要做什么才能完成这项工作,提前感谢
您可以按值获取密钥,如果存在,请将其删除。
int key=-zone_1.stream()
.filter(e -> e.getValue().equals(PLATE))
.map(Map.Entry::getKey)
.findFirst()
.orElse(null);
zone_1.remove(key);
但我建议使用 PLATE 作为键,因为您正在基于它进行操作。
希望对你有帮助
如果我理解正确,您想根据值从地图中删除一个条目。在这种情况下,您可以使用Map.values
和Collection.remove
方法:
// {1=ABCD123, 2=XYZ8910} contents of the map
zone_1.values().remove("XYZ8910");
System.out.println(zone_1); // {1=ABCD123}
这是最简单的情况。但是,如果您要按车牌执行查找,则可以考虑使用车牌作为键,将停车位用作值。所以而不是
{1=ABCD123, 2=XYZ8910}
use
{ABCD123=1, XYZ8910=2}
这实际上可能是您真正想要的。