Как реализовать следующий желаемый Hashmap - PullRequest
0 голосов
/ 20 июня 2019

Я хочу создать двухуровневую вложенную хэш-карту для представления типов книг, хранящихся в каждой библиотеке, и метода, который обновляет структуру данных при необходимости. Ключами первого уровня являются отдельные имена библиотек, а ключами второго уровня являются следующие («по умолчанию», «лист ожидания», «оформлен заказ»). Затем каждый из этих ключей будет указывать на свое значение (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";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...