2016-07-25 4 views
0

タイプのExcelファイル<文字列、HashMapの>からハッシュマップを作成すると、結果は{D1={C1=V1, C2=V2, C3=3},V D2={C4=V1, C5=V2}}形式でなければなりません。は、Java

ここ

、コードです:

HashMap<String,HashMap> list = new HashMap<String,HashMap>(); 
HashMap<String, String> result = new HashMap<String, String>(); 
HashSet<String> dst = new HashSet<String>(); 

for(int rowIndex = DATA_ROW; rowIndex <= numRows; rowIndex++) { 
    Row row = getRow(); 
    String loc = getLocation(); 
    String code = getCode(); 
    result.put(code, loc); 

    String d = getDestinationValue(); 
    dst.add(d); 

    list.put(d, result); 
} 
return list; 

問題、私は、それはまた、以前の値をクリアし、これによって達成された結果として結果のリストはカントがクリアされている顔として間違っています

{D1={C1=V1, C2=V2, C3=3, C4=V1, C5=V2},V D2={C1=V1, C2=V2, C3=3, C4=V1, C5=V2}} 

答えて

0

あなたの問題は、変数resultを使用してすべての結果を表していることです。あなたは毎回最終的な地図からそれを得ているはずです。例えば

あなたが結果を行毎そして

Map<String, Map<String, String>> result = new HashMap<>(); 

として定義されている場合、あなたはその後、使用前のバージョンを使用している場合putIfAbsentは、Java 8であること

result.putIfAbsent(destination, new HashMap<>()) 
result.get(destination).put(code, value); 

注意をするだろう同等物を達成するためにcontainsKeyおよびput

+0

ありがとうaton。はい、この作品。 if(!list.containsKey(dst)){ \t \t \t \t finalList.put(dst、new HashMap ()); \t \t \t \t \t \t finalList.get(dst).put(code、val); – user2184688

+0

@ user2184688それは素晴らしいです。それがあなたのために働く場合、答えを受け入れてください。 – sprinter