2011-09-12 64 views
-1

我有一種情況是我想將字符串轉換爲SortedMap<String,SortedMap<String,Object>>。在我的字符串中可以有多個單詞,我想將其添加到已排序的Map中。如何將字符串轉換爲SortedMap <String,SortedMap <String,Object >>?

String s2="{ age={}, city={City=1.4054651}, phoneno={}, zip={Zip=0.30685282}, name={}}"; 

請幫幫我。

+0

是的,就像是一個真正的toString()從地圖,因爲我使用RabbitMQ的出版商類,發送消息到字節[],當消費者得到的消息再次返回byte []。我是類型轉換字節數組轉換爲字符串,再次我需要將類型字符串值轉換爲sortmap。 –

+0

這些值是否始終是數字,或者它們是否可以是字符串或其他對象?如果它只是數字,它不應該太難,但如果'String's也被允許,你會得到令人討厭的東西:'city = {City =「}}}」}'(包含'}'的字符串) 。 –

+0

是的,我嘗試過,但在最後我堅持跟着代碼 –

回答

0
public static HashMap stringToHashMap(String str) 
    { 
     int count=0; 
     int equal_index=0; 
     int commaindex=0; 
     String key=null,val=null; 
     HashMap map=new HashMap(); 
     int size=str.length(); 
     if(str.charAt(0)=='{' && str.charAt(size-1)=='}') 
     { 
     System.out.println("Valid-Map object"); 
     str=str.substring(1); 
     size=size-1; 
     while(size!=0) 
     { 
      equal_index=str.indexOf('='); 
      if(equal_index==-1 && count==0) 
       return null; 
      key=str.substring(0,equal_index); 
      str=str.substring(key.length()+1,size); 
      size=size-(key.length()+1); 

      commaindex=str.indexOf(","); 
      if(commaindex==-1) 
       commaindex=str.lastIndexOf('}'); 
      val=str.substring(0,commaindex); 
      str=str.substring(val.length()+1,size); 
      size=size-(val.length()+1); 
      key=key.trim(); 
      val.trim(); 
      map.put(key, val); 
      count++; 
     } 
     } 
     else 
      throw new RuntimeException("Invalid string format--Cannot convert it to map"); 
      return map; 
    } 
相關問題