2010-11-04 14 views
8

Harita listesi oluşturmaya çalıştım. Aşağıdaki kodda, ben sadece ilk haritayı geçersiz kılma önlemek için nasıl Java: HashMaps'in bir listesini oluşturun

[{start=2,text=no}, {start=2,text=no}] 

var ancak

[{start=1,text=ye}, {start=2,text=no}] 

almak için bekliyorum? İşte benim kodum:

HashMap mMap = new HashMap(); 
ArrayList list = new ArrayList(); 
list.add(new HashMap()); 
mMap.put("start",1); 
mMap.put("text","yes"); 
list.add(mMap); 
mMap.put("start",2); 
mMap.put("text","no"); 
list.add(mMap); 
System.out.println("Final result: " + list); 

Teşekkürler!

==========================

bir prosedür dil kökeni (SAS) gelen Java'nın bir öğrenci olarak

, ArrayList, LinkedList, Map, LinkedMap, vb. Öğrenmek ve denemeyi birkaç saat harcadım. Ve neden sınırlı bilgimle anlamıyorum. Şimdi, bu aşağıdaki cevaplar mükemmel! Java'da çok önemli veri yapısını, en azından benim için açıkladılar.

TÜMÜNÜ TEŞEKKÜRLER !!

cevap

28

Varolan olanı yeniden kullanmak yerine, her giriş için yeni bir HashMap oluşturmanız gerekir. Bu işe yarar: nüfusun olduğu asla listenize boş harita ekler olarak

HashMap mMap = new HashMap(); 
mMap.put("start",1); 
mMap.put("text","yes"); 
list.add(mMap); 
mMap = new HashMap(); // create a new one! 
mMap.put("start",2); 
mMap.put("text","no"); 
list.add(mMap); 

da, sen list.add(new HashMap()); kaldırabilirsiniz.

0

Bunu asla harita bir başvuru tasarruf:

list.add(new HashMap()); 
0

üç listeye ekler var. ilk eklenti yeni bir harita örneğidir; Hiç bir değer belirlemedin. İkincisi, 1, evet olan nMap'a bir referansta geçiş yapar. Üçüncü eklediğinizde aynı referansı geçersiniz. Dolayısıyla Harita şimdi 3 referansa sahip, bir haritayı ilk kez hiç eklemediğiniz bir haritaya, sonraki haritaya sonraki 2'ye. Bu yüzden aynı çıktıyı elde edersiniz.

1

Evet, kod

list.add(new HashMap()); 

bu parçasından karma haritası asla başvurulmaz. Sonuç olarak, 3 tanesi bir arada olmak üzere 3 öğenin bir listesini alırsınız. belki de değer söz vardır

5

Bir şey HashMap için, sen Listesinde kullandığımız elementlerin türünü tanımlamak gerektiğidir onun değil olası sen Tamsayılar ve Strings karıştırma çünkü.

Ve başka şey türü olarak Liste arayüzünü kullanması gerektiğini, bu nedenle gelecekte uygulanması (ArrayList ya neyse) değiştirmek edebiliyoruz. İşte

düzeltilmiş kod:

Map mMap = new HashMap(); 
List<Map> list = new ArrayList(); 
İlgili konular