Я хочу создать двухуровневую вложенную хэш-карту для представления типов книг, хранящихся в каждой библиотеке, и метода, который обновляет структуру данных при необходимости. Ключами первого уровня являются отдельные имена библиотек, а ключами второго уровня являются следующие («по умолчанию», «лист ожидания», «оформлен заказ»). Затем каждый из этих ключей будет указывать на свое значение (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());
}
}
}
Я знаю, что приведенный выше код не будет работать, потому что я пытался вызвать методы карты на хэш-карте. Но главный вывод заключается в том, что строка ветви еще не существует в качестве ключа на 1-м уровне:
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);
}
создать шаблон для 2-го слоя вложенного hashmap и вставить соответственно
*** только действительные ключи для 2-го уровня
String BORROWED = "borrowed";
String WAITLISTED = "waitlisted";
String DEFAULT = "default";