Maison >Java >javaDidacticiel >L'ordre de récupération HashMap de Java garantit-il ?

L'ordre de récupération HashMap de Java garantit-il ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-14 08:13:10426parcourir

Does Java's HashMap Guarantee Retrieval Order?

L'ordre de récupération des cartes de hachage est-il préservé ?

En Java, les HashMaps utilisent un algorithme spécifique pour stocker et récupérer des données, laissant certains utilisateurs s'interroger sur l'ordre dans lequel les valeurs sont récupérées. En examinant un extrait de code, nous découvrirons la vérité derrière l'ordre de récupération HashMap.

import java.util.HashMap;

public class HashMapExample {
   public static void main(String[] args) {
       HashMap<Integer, String> hashmap = new HashMap<Integer, String>();
       hashmap.put(1, "apple" );
       hashmap.put(2, "lemon" );
       hashmap.put(3, "orange" );
       hashmap.put(4, "banana" );
       hashmap.put(5, "litchi" );
       hashmap.put(6, "mango" );
       hashmap.put(7, "papaya" );

       System.out.println(hashmap.size());

       for (String key : hashmap.values()) {
           System.out.println(key);
       }
   }
}

Sortie :

7
apple
lemon
orange
banana
litchi
mango
papaya

Comportement surprenant :

Étonnamment, les valeurs sont récupérées dans le même ordre dans lequel ils ont été insérés. Cependant, cette observation n'est pas toujours vraie.

La vérité :

Selon le HashMap Javadoc, rien ne garantit que l'ordre de récupération restera cohérent dans le temps. . Cela signifie que l'ordre de récupération peut changer arbitrairement.

Besoin d'un ordre cohérent ?

Si un ordre cohérent est crucial, on peut opter pour des structures de données alternatives telles que LinkedHashMap ou TreeMap .

  • LinkedHashMap : maintient l'ordre d'insertion ou d'accès (LIFO)
  • TreeMap : maintient l'ordre de comparaison en fonction de la clé

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn