获取多级链接哈希表的值

时间:2018-08-29 11:58:42

标签: java hashmap

我有一个linkedhashmap,它具有String值和一些其他链接的hashmap的集合。

我需要获取所有值。

这是我的代码:

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 :(得分:0)

  

我需要获取要分配给变量的各个值

然后执行以下操作:

varchar(50)

基本上,这是将值提取到Java变量中的唯一方法。您必须String varA = lhm.get("key A"); String varB = lhm.get("key B"); 一个一个地

请注意:您的代码将地图声明为get(),此处没有嵌套,键和值均为字符串。给定您当前的输入,只能使用一个简单的Map<String, String>

答案 1 :(得分:0)

如果您需要存储多级地图,则需要将地图定义为<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这样的分层数据结构会更好。

答案 2 :(得分:0)

查看您的输出,看来您的HasMap具有JSON对象的字符串。

要提取JSON对象的值,可以使用任何可用的JSON实用程序并将这些值解析为可以访问其属性和值的对象。

我希望这会有所帮助。