Java >> Tutoriel Java >  >> Tag >> HashMap

Différences entre HashMap et TreeMap en Java

HashMap et TreeMap en Java

Tout d'abord, nous verrons en quoi TreeMap diffère de HashMap en Java ?

Carte arborescente

  • Cette classe est disponible dans le package java.util.
  • Cette classe est une classe d'implémentation de l'interface Map.
  • La structure de données sous-jacente de TreeMap est l'arbre ROUGE-NOIR.
  • Dans TreeMap "l'ordre d'insertion des éléments" n'est pas conservé car les éléments seront insérés selon un ordre de tri des clés (ici le tri sera effectué en fonction des clés).
  • Dans TreeMap, l'objet est représenté comme un groupe d'éléments sous la forme d'une paire clé-valeur.
  • Dans TreeMap "l'insertion de doublons n'est pas possible" pour les clés (c'est-à-dire qu'il n'est pas autorisé d'insérer des éléments en double pour les clés).
  • Dans TreeMap "l'insertion de doublons est possible" pour les valeurs (c'est-à-dire qu'il est permis d'insérer des éléments en double pour les valeurs ou qu'il n'y a pas de restrictions sur les valeurs).
  • Dans TreeMap le tri se fera de deux types :
    1. Tri naturel par défaut (ordre croissant)
    2. Tri personnalisé (croissant ou décroissant)
  • Dans le tri naturel par défaut, les "clés TreeMap" doivent être homogènes et comparables.
  • Dans le tri personnalisé, les "clés TreeMap" n'ont pas besoin d'être homogènes et comparables.
  • Dans TreeMap "l'insertion nulle est possible" pour les clés en tant que premiers éléments ou en d'autres termes si nous insérons null après le premier élément, nous obtiendrons une exception.
  • Dans TreeMap "l'insertion nulle n'est pas possible" pour les clés de Map non vide.

Exemple :

// Java program to demonstrate the behavior of TreeMap 

import java.util.*;

class TreeMapClass {
    public static void main(String[] args) {
        // Creating an instance of TreeMap
        TreeMap tm = new TreeMap();

        // By using put() to add elements in TreeMap
        tm.put(1, "Java");
        tm.put(3, "C");
        tm.put(2, "C++");
        tm.put(4, "Java");
        tm.put(6, null);
        tm.put(7, 10);
        tm.put(2, "Ruby");

        /*  tm.put("Java" , "is a programming"); 
            Here hetrogenous object is not allowed for keys */

        /*  tm.put(null , "Python"); 
            Here null insertion for keys is not 
            possible for non-empty TreeMap */

        /*  tm.put(2 , "Ruby"); 
            Here we will not get any exception but 
            only one will be considerable */

        // Display Current TreeMap
        System.out.println("Display Current TreeMap is :" + tm);
    }
}

Sortie

E:\Programs>javac TreeMapClass.java

E:\Programs>java TreeMapClass
Display Current TreeMap is :{1=Java, 2=Ruby, 3=C, 4=Java, 6=null, 7=10}

Deuxièmement, nous verrons comment HashMap diffère de TreeMap en Java ?

HashMap

  • Cette classe est disponible dans le package java.util.
  • Cette classe est une classe d'implémentation de l'interface Map.
  • La structure de données sous-jacente de HashMap est Hashtable.
  • HashMap est un parent de LinkedHashMap.
  • Dans HashMap, "l'ordre d'insertion des éléments" n'est pas conservé car les éléments seront insérés en fonction d'un hashCode de clés (c'est-à-dire que l'ordre d'insertion n'a pas besoin d'être le même que l'ordre de récupération).
  • Dans HashMap, l'objet est représenté comme un groupe d'éléments sous la forme d'une paire clé-valeur.
  • Dans HashMap "l'insertion de doublons n'est pas possible" pour les clés (c'est-à-dire qu'il n'est pas autorisé d'insérer des éléments en double pour les clés).
  • Dans HashMap "l'insertion de doublons est possible" pour les valeurs (c'est-à-dire qu'il est permis d'insérer des éléments en double pour les valeurs ou qu'il n'y a pas de restrictions sur les valeurs).
  • Dans HashMap "l'insertion nulle est possible" pour les clés et les valeurs, mais une fois pour les clés et plusieurs pour les valeurs.
  • Dans HashMap, les "objets hétérogènes" sont autorisés pour les clés et les valeurs.

Exemple :

// Java program to demonstrate the behavior of HashMap 

import java.util.Collection;
import java.util.HashMap;

class HashMapClass {
    public static void main(String[] args) {
        // Creating an instance of HashMap
        HashMap hm = new HashMap();

        //By using put() method to add some values in HashMap
        hm.put("Java", 1000);
        hm.put("C", 2000);
        hm.put("C++", 3000);
        hm.put("Ruby", 4000);
        hm.put("Python", 1000);
        hm.put("null", null);
        hm.put("Django", null);

        /*  hm.put("null",null); 
            Here we will not get any error but 
            one null is accepted for keys*/

        // Display retrieval order of HashMap
        System.out.println("Current HashMap list is :" + hm);

        // by using values() to find values of HashMap
        Collection values = hm.values();

        // Display Values of HashMap
        System.out.println("Current HashMap Key values is :" + values);
    }
}

Sortie

E:\Programs>javac HashMapClass.java

E:\Programs>java HashMapClass
Current HashMap list is :{Ruby=4000, C=2000, Django=null, Python=1000, 
C++=3000, null=null, Java=1000}
Current HashMap Key values is :[4000, 2000, null, 1000, 3000, null, 1000].

Balise Java