2017-02-01 7 views
0

私は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);  
     } 
} 

詳細情報が必要な場合はお知らせください。よろしく。

+0

あなたはそれを試してみて、結果をお知らせください。 – Alnitak

+0

私は別にそれを実行することができないプロジェクトで使用されます。しかし私が私の場所に戻ってくる最初のことになります。 –

+0

地図はどれくらい大きくなりますか?もしそれが決して大きくならないと、あなたはその違いを伝えることができなくなります。しかし、これは単純なベンチマークである。しかしあなたがあなたのポストで読むならば、それぞれの費用を知るでしょう。また、取得頻度はどれくらいですか? – efekctive

答えて

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 

あなたはこの1 map.put("c_09.01", newMap);を使用するので、あなたはiterateに2回必要な場合。最初にあなたはiteratenewMapキーc_09.01を使用する必要があります。iterateOTHキー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 

だから私は、あなたが分割操作を使用する必要がありますね。

関連する問題