java - 如何在 map 中的 map 中迭代 map

标签 java dictionary iterator hashmap

我有一个 map 中的 map 中的 map 。格式为HashMap<String, Map>示例数据:

deviceName={commandName={dataKey1=[dataValue1], dataKey2=[dataValue2]}}

其设置方式为deviceNamekeycommandName是它的值(value)。为了简单起见,现在只有一个命令,但可能有多个命令。在第二次迭代时commandNamekey{dataKey1=[dataValue1], dataKey2=[dataValue2]}是值。在第三次迭代中dataKey1是关键并且 dataValue1是值(它是一个数组列表)。

我可以迭代一个,但我不知道如何做到这一点。

public void analyseVersion(Map cmd) {

    Iterator deviceIT = cmd.keySet().iterator();
    while (deviceIT.hasNext()) {
        String deviceName = (String) deviceIT.next();
        //Map<String, Map> cmd = (Map<String, Map>) cmd.get(deviceName);//This will not work.
        //At this point I want to iterate through each command and for each command iterate through each data set.
    }
}

最佳答案

呼应jtahlborn,抽象是你的 friend

public class Data
   private Map<String, Object> attributes

public class Command
   private Map<String, Data> data;

public class Device
   private Map<String, Command> commands;

// in main, etc
for (Entry<String, Command> commandEntry : device.getCommandEntries())
{
  for (Entry<String, Data> dataEntry : commandEntry.getValue().getDataEntries())
  {
    for (Entry<String, Object> attributeEntry : dataEntry.getValue().getAttributeEntries())
       // do something
  }
}

关于java - 如何在 map 中的 map 中迭代 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7774302/

相关文章:

java - SOLR 将 JSON 响应转换为 javabin

python 用其他嵌套字典更新嵌套字典

java - 哪种方法是最好的?

C++ - 为 std::array 迭代器的 std::array 创建别名

java - jdk6和jdk7相同的测试得到不同的结果

Java REST boolean 字段的部分更新

java - Java是如何实现哈希表的?

java集合用作 map 和检索数据

c++ - C++ 标准是否要求必须为给定的迭代器类型提供运算符 !=?

java - 用Java中的步骤迭代LinkedList