映射中的映射vs拆分String类型的键,它会执行得更快?

时间:2017-02-01 13:43:00

标签: java string collections split hashmap

我的地图为Map<String,String> 条目类似于map.put("c_09.01--x28", "OTH")。在此我使用拆分密钥并使用x28将其更改为OTH。所以我的问题是我是应该使用拆分操作还是在地图中使用地图和map.put("c_09.01", newMap) newMap将map.put("x28", 'OTH')。哪一个会给我更好的表现?我使用过的示例代码是

for (Entry<String,String> sheetEntry : this.getSheetCD().getUserDefinedSheetCodeMap().entrySet()) {
    String Key = sheet.getKey().split("--")[1];
    int sheetIndex = template.getSheetIndex(sheetKey);
    if(sheetEntry.getKey().toUpperCase().startsWith(getFileName()){ 
        String newSheetName = sheetEntry.getValue();
        template.setSheetName(sheetIndex, newSheetName);    
        }
}

如果需要更多信息,请与我们联系。问候。

1 个答案:

答案 0 :(得分:0)

您应该使用拆分操作,因为如果您正在使用拆分操作,那么在iteration地图对象时,您可以使用单iterate forEach loop值。

示例代码

String str[] = "c_09.01--x28".split("--")[1];
        Map<String, String> map = new HashMap<>();
        map.put(str, "OTH");

        for(Map.Entry eMap:map.entrySet()){             //single forEach loop
            System.out.println("Key : "+eMap.getKey());
            System.out.println("Value : "+eMap.getValue());
        }

<强>输出

Key : x28
Value : OTH

如果你使用map.put("c_09.01", newMap);这个,那么你需要iterate两次。首先,您需要iterate newMap使用密钥c_09.01,而不是需要iterate OTH使用密钥x28

示例代码

String str[] = "c_09.01--x28".split("--");
        Map<String, String> map = new HashMap<>();
        map.put(str[1], "OTH");

        Map<String, Map> map1 = new HashMap<>();
        map1.put(str[0], map);

        for(Map.Entry eMap : map1.entrySet()){            //First forEach Loop
            System.out.println("Key : "+eMap.getKey());  //getiing key "c_09.01"
            Map<String, String> map2 = (Map<String, String>) eMap.getValue(); //getting map and need to be cast because it return object type
            for(Map.Entry eMap1 : map2.entrySet()){      // Second forEach loop 
                System.out.println("Key Using map.put(String, newMAp) : "+eMap1.getKey());
                System.out.println("ValueUsing map.put(String, newMAp) : "+eMap1.getValue());
            }
        }

<强>输出

Key : c_09.01
Key Using map.put(String, newMAp) : x28
ValueUsing map.put(String, newMAp) : OTH

所以我想你应该使用拆分操作。