Warum toString-Funktion eines HashMap druckt sich mit einer anderen Reihenfolge?

Habe ich diese sehr einfache Stück code, und ich war gerade versucht zu spielen ein bisschen mit verschiedenen Arten von Objekten in einer Karte.

//There's a bit of spanish, sorry about that
//just think 'persona1' as an object with
//a string and an int
Map mapa = new HashMap();
mapa.put('c', 12850);
mapa.put(38.6, 386540);
mapa.put("Andrés", 238761);
mapa.put(14, "Valor de 14");
mapa.put("p1", persona1);
mapa.put("Andrea", 34500);

System.out.println(mapa.toString());

Und dann erwarte ich von der Konsole etwas wie:

{c=12850, 38.6=386540, Andrés=238761, 14=Valor de 14, p1={nombre: Andres Perea, edad: 10}, Andrea=34500}

Aber susprisingly für mich, ich bekam dieselben Daten in einer anderen Reihenfolge:

{38.6=386540, Andrés=238761, c=12850, p1={nombre: Andres Perea, edad: 10}, Andrea=34500, 14=Valor de 14}

Ist es egal, ob ich versuche andere Art von Objekten, die auch nur Strings oder numerische Typen, die es immer das gleiche macht, macht es eine andere, ohne-scheinbar-alle-Sinne um.

Kann jemand mir einen Tipp geben, warum dies passiert? Oder kann etwas zu offensichtlich bin ich vermisst?

Ich bin mit Java 1.7 und Eclipse Juno.

  • intern verwendet es array zum speichern der Werte, und diese Werte sind eingefügt in der index berechnet wird, indem eine hash-Funktion wandelt die Schlüssel zum index..So ist die Reihenfolge ändern würde, je nach Schlüssel.
  • das ist ein schönes Stück info, ich werde versuchen, einige änderungen zu sehen, wie er reagiert
InformationsquelleAutor unmultimedio | 2013-09-13
Schreibe einen Kommentar