Извлечение значений многоуровневой связанной карты - PullRequest
0 голосов
/ 29 августа 2018

У меня есть связанная хэш-карта, в которой есть строковые значения и коллекция нескольких других связанных хэш-карт.

Мне нужно получить все значения.

Вот мой код:

HashMap<String, String> lhm =  new HashMap<String, String>();
//********Code to assign lhm *******

System.out.println("LHM="+lhm.values());

Выход:

LHM=[{SchemaVersion=1.0, AgentVersion=3.0.1.31, ServiceTag=XXXX, Model=Latitude E7240, Registered=true, OSVersion=10.0.14393, SPVersion=0, UTCDate=2018-08-28T17:38:57.5935378Z, BIOSVersion=A25, Status=Informational, Description=No Failures detected; High Memory Usage; High CPU Usage}, {LocalDate=2018-08-28T23:08:57.6080352+05:30, LastBootUpDate=2018-08-28T23:05:36.48659, WindowsUpdatedRunDate=0001-01-01T00:00:00, ApplicationCrashesLast24hrs=0, SystemDriveFreeSpace=202.30 GB, HighMemUsage=82.8125, HighCPUUsage=100}, XXXXXX$$2313213132132131233]

Объект LHM в режиме отладки: LHM Object in Debug mode

Ответы [ 3 ]

0 голосов
/ 29 августа 2018

Если вам нужно хранить многоуровневые карты, тогда карту необходимо определить как <String, Object>, а затем вам нужно запросить тип значения, чтобы получить его

Map<String, Object> lhm = new HashMap<>();
Map<String, Object> subMap = new HashMap<>();
subMap.put("SchemaVersion", "1.0");  // storing String value
lhm.put("my-map", subMap);  // storing Map value

// retrieval: need to query actual type of value
Object value = lhm.get("my-map");
if (value instanceOf String) {
   String strValue = (String)value;
   // process String value
} else {
   Map mapValue = (Map)value;
   // process Map value
}

но, как вы можете видеть, это громоздко и подвержено ошибкам. иерархическая структура данных, такая как Tree, была бы намного лучше.

0 голосов
/ 29 августа 2018

Глядя на ваш вывод, кажется, что ваш HasMap имеет строку из объектов JSON.

Для извлечения значений объектов JSON вы можете использовать любую из доступных утилит JSON и анализировать значения для объекта, к которому вы можете получить доступ к его свойствам и значениям.

Надеюсь, это поможет.

0 голосов
/ 29 августа 2018

Мне нужно получить индивидуальные значения для присвоения переменным

Тогда просто сделай это:

String varA = lhm.get("key A");
String varB = lhm.get("key B");

По сути, это единственный способ извлечь значения в переменную в Java. Вы должны get() их один за другим.

Обратите внимание: ваш код объявляет карту как Map<String, String>, здесь нет вложенности, ключи и значения являются строками. Учитывая ваш текущий ввод, ничего кроме простого get() невозможно.

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