我想创建2级深度嵌套的哈希表来表示存储在每个库中的书籍的类型,并创建一种在需要时更新数据结构的方法。第一级键是不同的库名,而第二级键是以下内容(“默认”,“等待列表”,“已签出”)。然后,这些键中的每个键都将指向其值(包含适当书本实例的Arraylist)。我在初始化初始的空嵌套哈希图并开发进一步更新它的方法时遇到了问题。
public static void iterate(HashMap<String, Object> map, String branchname, String itemtype, Item item_instance) {
for (HashMap.Entry<String, Object> entry : map.entrySet()) {
// System.out.println("Key is:"+ entry.getKey());
if (entry.containsKey(branch)){
}else{
HashMap<String, ArrayList<Item>> temp = new HashMap<String, ArrayList<Item>>;
temp.put(BORROWED, new ArrayList<Item>());
temp.put(WAITLISTED, new ArrayList<Item>());
temp.put(DEFAULT, new ArrayList<Item>());
entry.put(branch, temp);
}
if (entry.getValue() instanceof Map) {
System.out.println("Map object found, iterating again");
iterate((Map<String, Object>) entry.getValue());
} else {
System.out.println("found end , value is:"+ entry.getValue());
}
}
}
我知道上面的代码不会运行,因为我尝试在hashmap上调用map方法。但是主要的收获是,如果分支字符串在第一级中还不存在作为键:
if (entry.containsKey(branch)){
}else{
HashMap<String, ArrayList<Item>> temp = new HashMap<String, ArrayList<Item>>;
temp.put(BORROWED, new ArrayList<Item>());
temp.put(WAITLISTED, new ArrayList<Item>());
temp.put(DEFAULT, new ArrayList<Item>());
entry.put(branch, temp);
}
为嵌套哈希图的第二层创建模板,并进行相应插入 ***只有第二级的有效键是
String BORROWED = "borrowed";
String WAITLISTED = "waitlisted";
String DEFAULT = "default";