【问题标题】:Fetching the values of multi-level linkedhashmap获取多级linkedhashmap的值
【发布时间】:2018-08-29 11:58:41
【问题描述】:

我有一个linkedhashmap,它有字符串值和几个其他链接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.values()
  • 一个定义为&lt;String, String&gt;Map不能是“多级”它只能存储String
  • @Sharon Ben Ashe,我需要将各个值分配给变量。
  • 的 map 可以代替什么解决方案?
  • 我注意到你的问题仍然是“开放的”——因为你没有接受答案。请查看并决定是否要accept 回答。或者让我知道我是否可以做些什么来增强我的输入以使其被接受。接受有助于未来的读者确定问题是否已解决,并对花时间回答你的人表示感谢。谢谢!

标签: java hashmap


【解决方案1】:

如果需要存储多级地图,则需要将地图定义为&lt;String, Object&gt;,然后需要查询值的类型才能获取

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】:

    我需要将单个值分配给变量

    那就这样做吧:

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

    基本上,这是在 Java 中将值提取到变量中的唯一方法。你必须一一get()他们。

    请注意:您的代码将映射声明为Map&lt;String, String&gt;,此处没有嵌套,键和值都是字符串。鉴于您当前的输入,除了简单的get() 之外别无其他可能。

    【讨论】:

      【解决方案3】:

      查看您的输出,您的 HasMap 似乎包含 JSON 对象字符串。

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

      我希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多