I am trying to enter the below statement into HashMap
Input Line: Rainy#No:2 Sunny#No:3 Rainy#Yes:3 Sunny#Yes:2 Overcast#Yes:4
Expected Output:{Rainy={No=2,Yes=3},Rainy={No=3,Yes=2},Overcast={Yes=4}}
What I did so far is
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
public class StackHash{
/**
*@paramargs
*/
staticConcurrentMap<String,HashMap<String,Integer>>map=newConcurrentHashMap<>();
public static final String TAB="\t";
public static final String SPACE=" ";
public static final String HASH="#";
public static final String COLON=":";
public static void main(String[]args){
//TODOAuto-generatedmethodstub
Stringline="Rainy#No:2 Sunny#No:3 Rainy#Yes:3 Sunny#Yes:2 Overcast#Yes:4";
StringTokenizerst=newStringTokenizer(line,SPACE);
HashMap<String,Integer>attibuteCollect=newHashMap<String,Integer>();
while(st.hasMoreTokens()){
Stringtoken1=st.nextToken();
String[]parts=token1.split(HASH);
String[]parts1=parts[1].split(COLON);
attibuteCollect.put(parts1[0],Integer.parseInt(parts1[1]));
if(map.isEmpty()){
map.put(parts[0],attibuteCollect);
}
else{
for(Map.Entry<String,HashMap<String,Integer>>entry:map.entrySet()){
StringkeyMap=entry.getKey();
if(keyMap.equals(parts[0])){
map.put(keyMap,attibuteCollect);
}
else{
map.put(parts[0],attibuteCollect);
}
}
}
}
System.out.println("finalmap"+map);
}
}
Output
map {Rainy={Yes=4, No=3}, Sunny={Yes=4, No=3}, Overcast={Yes=4, No=3}}
Am I doing anything wrong.
Please Suggest.