2014-10-21 28 views
11

Come si può convertire una stringa in hash MappaCome convertire stringa in HashMap in Java

String value = "{first_name = naresh,last_name = kumar,gender = male}" 

in

Map<Object,Object> = { 
         first_name = naresh, 
         last_name = kumar, 
         gender = male 
         } 

sono stati le chiavi sono first_name,last_name,gender e valori sono naresh,kumar,male

Nota: Le chiavi possono essere qualsiasi cosa come city = hyderabad

Qualsiasi generico a pproach sarà molto apprezzato.

+0

Estrarre le coppie "chiave, valore" dalla stringa e creare la mappa. – Maroun

+1

Hai provato qualcosa? – superbob

+0

le domande relative alla descrizione logica sono altamente scoraggiate in quanto possono esserci più soluzioni per quanto sopra e il suo argomento lontano. a proposito, qual è stato il tuo approccio hai provato qualcosa o sei rimasto bloccato da qualche parte, allora possiamo aiutarti? – vikeng21

risposta

27

Questa è una soluzione. Se vuoi renderlo più generico, puoi trovarci nella libreria StringUtils.

String value = "{first_name = naresh,last_name = kumar,gender = male}"; 
value = value.substring(1, value.length()-1);   //remove curly brackets 
String[] keyValuePairs = value.split(",");    //split the string to creat key-value pairs 
Map<String,String> map = new HashMap<>();    

for(String pair : keyValuePairs)      //iterate over the pairs 
{ 
    String[] entry = pair.split("=");     //split the pairs to get key and value 
    map.put(entry[0].trim(), entry[1].trim());   //add them to the hashmap and trim whitespaces 
} 

Ad esempio è possibile passare

value = value.substring(1, value.length()-1); 

a

value = StringUtils.substringBetween(value, "{", "}"); 

se si utilizza StringUtils contenuto nel apache.commons.lang pacchetto.

+0

Fornire una risposta completa è la possibilità di apprendimento dell'OP. Questo non lo aiuta ma incoraggia OP a fare di nuovo lo stesso tipo di domanda. –

+0

Ci scusiamo per questo, ma la mia intenzione era qui, se non so quali sono le chiavi in ​​stringa. –

+1

Non devi conoscere le chiavi. Il mio codice usa sempre il lato sinistro del segno di uguale come chiave. Hai provato? – kai

7
String value = "{first_name = naresh,last_name = kumar,gender = male}" 

Cominciamo

  1. Rimuovere { e } dal String >> first_name = Naresh, cognome = Kumar, genere = maschio
  2. Spalato il String da , >> array di 3 elementi
  3. Ora si dispone di un array con 3 elemento
  4. I terare lo array e dividere ciascun elemento per =
  5. Creare un Map<String,String> inserire ciascuna parte separata da =. prima parte come Key e seconda parte come Value
+0

Forse tagliare la stringa per non confondersi quando si chiama map.get (trimmedString) – user

+0

Grazie per la riproduzione, ma cosa succede se ho detto 100 coppie chiave e valore .. –

+0

@Nareshkumar Non c'è alcun problema con quello. –

Problemi correlati