gpt4 book ai didi

java - 如何使用单个 Hashmap 和多个 Arraylist 存储 ArrayList>

转载 作者:行者123 更新时间:2023-12-02 03:30:31 26 4
gpt4 key购买 nike

我的代码目前遇到问题

我试图将 Hashmap 的值放入 ArrayList> 中,该 Hashmap 从另一个数组列表获取其值

这是代码:

ArrayList<HashMap<String, String>> AL_route_bus_collection_a = new    ArrayList<HashMap<String,String>>();

HashMap<String,String> HM_route_bus_collection_a = new HashMap<String, String>();


for(int i = 0;i<routeNo_set.size();i++ ) {

HM_route_bus_collection_a.put("route_no", routeNo_set.get(i));
HM_route_bus_collection_a.put("address", address_set.get(i));
HM_route_bus_collection_a.put("bus_type", busType_set.get(i));

AL_route_bus_collection_a.add(HM_route_bus_collection_a);
}
for (HashMap<String, String> hashMap : AL_route_bus_collection_a) {
System.out.println(hashMap.keySet());
for (String key : hashMap.keySet()) {
System.out.println(hashMap.get(key));
}
}

但我最终只得到数组列表中重复3次的值routeNo_set(2)、address_set(2)、busType_set(2)

output screenshot

任何帮助都会非常有帮助提前致谢

最佳答案

您的问题来自这样一个事实:您始终在循环内使用相同的映射,并将其存储在 ArrayList 中三次。

这就是为什么您会得到相同的结果,因为它是相同的映射,并且如果提供的键已存在于映射中,则 put() 方法会替换键的旧值。

每次执行循环时都必须实例化一个新 map 。

以下代码应该可以工作:

ArrayList<HashMap<String, String>> AL_route_bus_collection_a = new    ArrayList<HashMap<String,String>>();

for(int i = 0;i<routeNo_set.size();i++ ) {

HashMap<String,String> HM_route_bus_collection_a = new HashMap<String, String>();
HM_route_bus_collection_a.put("route_no", routeNo_set.get(i));
HM_route_bus_collection_a.put("address", address_set.get(i));
HM_route_bus_collection_a.put("bus_type", busType_set.get(i));

AL_route_bus_collection_a.add(HM_route_bus_collection_a);
}
for (HashMap<String, String> hashMap : AL_route_bus_collection_a) {
System.out.println(hashMap.keySet());
for (String key : hashMap.keySet()) {
System.out.println(hashMap.get(key));
}
}

关于java - 如何使用单个 Hashmap 和多个 Arraylist 存储 ArrayList<HashMap<String, String>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38160639/

26 4 0