J'ai une application qui affiche une collection d'objets en lignes, un objet = une ligne. Les objets sont stockés dans une HashMap. L'ordre des lignes n'affecte pas la fonctionnalité de l'application (c'est pourquoi une HashMap a été utilisée au lieu d'une collection triable).
Cependant, j'ai remarqué que la même application se comporte différemment lorsqu'elle est exécutée avec deux versions différentes de la Machine Virtuelle Java. L'application est compilée avec JDK 5, et peut être exécutée avec les exécuteurs Java 5 ou Java 6, sans aucune différence fonctionnelle.
L'objet en question remplace java.lang.Object#hashCode()
et évidemment des précautions ont été prises pour suivre le contrat spécifié dans l'API Java. Cela est prouvé par le fait qu'ils apparaissent toujours dans le même ordre à chaque exécution de l'application (dans le même environnement d'exécution Java).
Par curiosité, pourquoi le choix de l'environnement d'exécution Java affecte-t-il l'ordre?