我有一个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]
答案 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实用程序并将这些值解析为可以访问其属性和值的对象。
我希望这会有所帮助。