java - 如何让 Hashmap 为一个键分配多个值?
问题描述
嗨,您在下面看到的代码是基于火车预订系统界面的,我包含了一个名为 addCustomer 的方法,它会提示一个文本字段来请求客户姓名(Hashmap Key),然后一旦提交姓名,座位按钮然后投影允许客户选择他或她的名字下的多个座位,所选座位号存储为客户姓名的键值。座位容量限制为 42 个座位。
[界面如下所示:IMAGE 但是设置 Hashmap 是我的主要问题,它只为每个客户名称存储一个座位号。
public static final int SEATING_CAPACITY = 42;
public static void addCustomer(Button[] viewBtn, GridPane pane, int[] keep, TextField tf, HashMap customerBooked, Button submit) {
pane.setVgap(10);
pane.setHgap(35);
pane.setPadding(new Insets(10, 10, 10, 280));
submit.setOnAction(event -> {
int i = 0;
for (int y = 1; y <= 14; y++) {
for (int x = 1; x <= 3; x++) {
i++;
String num = "" + i;
i--;
viewBtn[i] = new Button(num);
viewBtn[i].setId("Seat " + i);
viewBtn[i].setDisable(true);
pane.add(viewBtn[i], x, y);
viewBtn[i].setMaxSize(50, 150);
viewBtn[i].setDisable(false);
if (keep[i] == 1) {
viewBtn[i].setStyle("-fx-background-color: red;");
} else {
viewBtn[i].setStyle("-fx-background-color: #03fc98;");
int finalI = i;
viewBtn[i].setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
viewBtn[finalI].setStyle("-fx-background-color: red;");
keep[finalI] = 1;
String name = new String(tf.getText());
customerBooked.put(name, viewBtn[finalI]);
}
});
}
i++;
}
}
});
System.out.println(customerBooked);
}
当我开始打印 Hashmap 时,我注意到发生了这种情况,例如,当我输入 Sam 的名字并单击以下按钮时,座位为 24、27、33。它最终占据了最后一个座位。
{Sam=Button[id=Seat 32, styleClass=button]'33'}
除此之外,按钮样式和座位 ID 也被放置到我不想考虑的座位值。
我需要修复它,使它看起来像下面的那样。这样我可以将它调整到我的其他方法,比如按名称搜索客户座位或根据名称删除。
{Sam='24','27','33',Jane='25'}
解决方案
的目的HashMap
是为每个键存储一个条目。除非您使用列表作为值,否则您想要实现的 HashMap 是不可能的,例如HashMap<String,ArrayList<String>>
.
有几个可用的库提供MultiMap
, 可以满足您的需求。见https://www.baeldung.com/java-map-duplicate-keys
推荐阅读
- haskell - 停止 Duckling 在给定时间段之后选择第一个间隔
- mongodb - 将 $facet mongo 查询转换为 Spring Data
- mysql - 如何选择 field2 从不为 x 的所有非唯一字段 1?
- osgi - 如何在吊索重写管道中配置转换器?
- asp.net - asp.net 中的 FCKeditor
- python - 返回命名空间值
- python - Pandas 从 df 中提取行,其中 df['col'] 值与 df2['col'] 值匹配
- java - Spring Boot + Thymeleaf:如何在页面的一个列表中显示书籍及其作者
- batch-file - 结合颜色和中心文本的 2 个代码。可能吗?
- python - 查找dict的dict中所有值的总和