2016-04-28 3 views
1

Diese Frage wurde bereits früher gestellt. Aber jede dieser Antworten hat mein Problem nicht gelöst. Jemand bitte helfen.HashMap.put() überschreiben bereits vorhandener Wert, auch wenn der Schlüsselwert anders ist

Ich habe zwei HashMaps, final HashMap<String,String> dataList = new HashMap<String,String>(); final HashMap<String,HashMap<String,String>> full = new HashMap<String,HashMap<String,String>>();

Dies ist mein Code.

  int i=0; 
      for(DataSnapshot snap : dataSnapshot.getChildren()) { 
       i++; 
       String id = "Name "+String.valueOf(i); 
       strArray.add(snap.child("email").getValue().toString()); 
       String name =   snap.child("FirstName").getValue().toString() + " " + snap.child("LastName").getValue(); 
       dataList.put("Name", name); 
       dataList.put("Email",snap.child("email").getValue().toString()); 
       dataList.put("Mobile", snap.child("Mobile").getValue().toString()); 
       dataList.put("Birthdate", snap.child("birthdate").getValue().toString()); 
       System.out.println("Datalist " + dataList); 
      full.put(id, dataList);} 

ich zu erwarten haben, {Name 1 = {Birthdate=2012/02/15, [email protected], Mobile=, Name= },Name 2 = {Birthdate=2012/02/15, Email=xc, Mobile=8524, Name=Sdcc Kkn}}

Aber es überschreibt die excisting Wert. Dies ist das Ergebnis, das ich bekomme, {Name 1={Birthdate=2012/02/15, Email=xc, Mobile=8524, Name=Sdcc Kkn}, Name 2={Birthdate=2012/02/15, Email=xc, Mobile=8524, Name=Sdcc Kkn}}

Jemand bitte helfen Sie mir mit diesem Problem. Kommentar, wenn Sie mehr Informationen benötigen. Danke

+1

Sie verwenden dieselbe Map-Instanz jedes Mal in der Schleife. Erstellen Sie jedes Mal eine neue 'Map'-Instanz für' dataList'. –

+0

Danke für die Mike – Choxmi

Antwort

5

Sie müssen diese Zeile hinzufügen: HashMap<String,String> dataList = new HashMap<String,String>(); vor dieser Zeile: dataList.put("Name", name);.

Was passiert ist, dass Sie Ihre Map wiederverwenden, also überschreiben Sie die Schlüssel jedes Mal, wobei das Endergebnis das letzte Kind ist, das Sie verarbeitet haben.

+0

Hey Vielen Dank. Das habe ich nicht bemerkt. Danke noch einmal. – Choxmi