代码之家  ›  专栏  ›  技术社区  ›  pwndyp

映射以下数据的键值对?

  •  1
  • pwndyp  · 技术社区  · 8 年前

    Sample Data

    我有下面的excel工作表,我想将其绑定到键值对的映射。(使用JXl解析数据) 我希望数据结构如下:

    Map<String,Map<String, List<String>>> map
    

    其中密钥将是阶段请求集,然后我们有阶段req和阶段seq的映射。

    我已经能够在地图i:e中绘制地图 Map<String, List<String>> 部分

    如何将映射添加到映射中,其中它将是某个键的值。

                  for(int i = 3;i<sheet.getRows();i++){               
                             if(!sheet.getCell(2,i).getContents().isEmpty()){
                                 lastUpdated = sheet.getCell(2,i).getContents();                           
                             }
    
                             if (!sheet.getCell(3,i).getContents().isEmpty()) {
                                 String content = sheet.getCell(3,i).getContents();
                                 if (map.containsKey(lastUpdated)) {
                                     map.get(lastUpdated).add(content);
                                 } else {
                                     ArrayList<String> temp = new ArrayList<String>();
                                     temp.add(content);
                                     map.put(lastUpdated, temp);
                                 }
                             }
    
                         }
    

    这将在一个映射中为我们提供整个阶段req和阶段seq,该映射包含键-值对中的阶段及其序列的所有值。

    现在,如何将此映射绑定到阶段请求集名称键。

    Java和集合新手请帮助。

    1 回复  |  直到 8 年前
        1
  •  0
  •   Pavan Kumar    8 年前

    我相信下面就是你需要的。如果还不够,请通过任何云存储和完整的源代码将完整的excel工作表作为文件共享。

            Map<String, Map<String, List<String>>> map = new HashMap<>();
            for(int i = 3;i<sheet.getRows();i++){
                if(!sheet.getCell(2,i).getContents().isEmpty()){
                    lastUpdated = sheet.getCell(2,i).getContents();
                }
    
                if (!sheet.getCell(3,i).getContents().isEmpty()) {
                    String content = sheet.getCell(3,i).getContents();
                    if(!map.containsKey(lastUpdated)){
                        map.put(lastUpdated, new HashMap<>());
                    }
                    if(!map.get(lastUpdated).containsKey(content)){
                        Map<String, List<String>> rowMap = map.get(lastUpdated);
                        rowMap.put(content, new ArrayList<>());
                        map.put(lastUpdated, rowMap);
                    }
                    for(Cell c : Arrays.copyOfRange(sheet.getRow(i), 4, sheet.getRow(i).length)){
                        if(CellType.EMPTY != c.getType()){
                            map.get(lastUpdated).get(content).add(c.getContents());
                        }
                    }
                }
            }