2016-04-28 19 views
1

この質問は先に質問されました。しかし、それらの回答のいずれかが私の問題を解決しませんでした。誰か助けてください。HashMap.put()キー値が異なっていても、すでに除外されている値をオーバーライドします。

私は2つのハッシュマップを持って、 final HashMap<String,String> dataList = new HashMap<String,String>(); final HashMap<String,HashMap<String,String>> full = new HashMap<String,HashMap<String,String>>();

は、これは私のコードです。

  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);} 

私は、持っていることを期待{Name 1 = {Birthdate=2012/02/15, [email protected], Mobile=, Name= },Name 2 = {Birthdate=2012/02/15, Email=xc, Mobile=8524, Name=Sdcc Kkn}}

しかし、それはexcisting値を上書きします。これは私が得た結果です。 {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}}

誰か助けてください。さらに詳しい情報が必要な場合はコメントしてください。 ありがとうございます

+1

ループのたびに同じ 'Map'インスタンスを使用しています。毎回 'dataList'の新しい' Map'インスタンスを作成してください。 –

+0

マイクありがとう – Choxmi

答えて

5

この行を追加する必要があります。この行の前に::dataList.put("Name", name);

あなたはMapを再使用しているため、毎回そのキーを上書きして、最終結果が最後に処理した子になります。

+0

ありがとう、ありがとう。私はそれを認識しませんでした。再度、感謝します。 – Choxmi