Pourquoi ne toString fonction d'une table de hachage imprime lui-même avec un ordre différent?

J'ai cette très simple morceau de code, et j'ai juste essayé de jouer un peu avec les différents type d'objets à l'intérieur d'une Carte.

//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());

Puis-je attendre de la console quelque chose comme:

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

Mais susprisingly pour moi j'ai eu les mêmes données dans un ordre différent:

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

Ce n'est pas grave si j'ai essayer d'autres types d'objets, même pour les Chaînes ou les types numériques, il le fait toujours la même chose, il fait un autre sans-paraît-il-tout-le sens de l'ordre.

Quelqu'un peut me donner un indice pourquoi cela se produit? Ou peut-être quelque chose de trop évident que je suis absent?

Je suis à l'aide de Java 1.7 et Eclipse Juno.

en interne, il utilise le tableau pour stocker les valeurs et ces valeurs sont insérées à l'indice calculé par une fonction de hachage qui convertit la clé de l'index..Donc l'ordre serait de changer en fonction de la clé.
c'est un beau morceau de l'info, je vais essayer quelques-uns des changements pour voir comment il réagit

OriginalL'auteur unmultimedio | 2013-09-13