Maison >Java >javaDidacticiel >Tri de LinkedHashMap par valeur à l'aide de l'interface comparable en Java

Tri de LinkedHashMap par valeur à l'aide de l'interface comparable en Java

WBOY
WBOYavant
2023-08-26 09:53:061708parcourir

Tri de LinkedHashMap par valeur à laide de linterface comparable en Java

LinkedHashMap est une classe générale utilisée pour implémenter l'interface Map. De plus, il s'agit d'une sous-classe de la classe HashMap, elle peut donc utiliser toutes les méthodes de la classe HashMap et effectuer des opérations similaires.

Java fournit plusieurs méthodes pour trier LinkedHashMap, nous apprendrons comment le créer à l'aide de l'interface Comparable et le trier par sa valeur à travers cet article.

Programme pour trier LinkedHashMap par valeur

Avant de passer directement au processus de tri, examinons quelques concepts -

LinkedHashMap

Comme nous en avons discuté précédemment, la classe LinkedHashMap étend la classe HashMap pour implémenter l'interface Map. Il maintient les paires clé-valeur. La clé est un objet utilisé pour obtenir et recevoir la valeur qui lui est associée. Il stocke les éléments mappés dans la LinkedList dans l'ordre d'insertion, c'est-à-dire qu'il conserve l'ordre d'insertion des éléments. De plus, chaque fois que nous renvoyons ses éléments, il est imprimé dans l'ordre d'insertion.

La syntaxe générale de LinkedHashMap est la suivante -

Grammaire

LinkedHashMap< TypeOfKey, TypeOfValue > nameOfMap = new LinkedHashMap<>();

Dans la syntaxe ci-dessus,

TypeOfKey - spécifie le type de données de la clé.

TypeOfValue - Spécifie le type de données de la valeur à stocker dans la carte.

nameOfMap - Donnez à votre carte un nom approprié.

Interface similaire

Java fournit une variété d'algorithmes et de méthodes de tri qui peuvent nous aider à trier des tableaux, des listes ou toute autre collection. L'interface comparable est une méthode supplémentaire très utile lorsque nous souhaitons trier des objets personnalisés dans l'ordre naturel. Par exemple, il trie les chaînes lexicographiquement et les nombres numériquement. Cette interface est disponible dans le package "java.lang".

Grammaire

class nameOfclass implements Comparable<nameOfclass>

Méthode compareTo()

L'interface Comparable définit uniquement une méthode appelée "CompareTo" qui peut être remplacée pour trier une collection d'objets. Il offre la possibilité de comparer les objets d’une classe avec elle-même. Il renvoie 0 lorsque l'objet "this" est égal à l'objet passé, une valeur positive si l'objet "this" est supérieur et une valeur négative dans le cas contraire.

Grammaire

compareTo(nameOfclass nameOfobject); 

Méthode Collections.sort()

La classe "Collections" de l'interface de collection fournit une méthode statique nommée "Collections.sort()" qui peut trier les éléments d'une collection spécifiée (telle que ArrayList ou LinkedList). Il est disponible dans le package "java.util".

Grammaire

Collections.sort(nameOfcollection);

Algorithme

  • Étape 1 - Créez une classe 'Cart' qui implémente l'interface Comparable. A l'intérieur de la classe, déclarez deux variables et définissez un constructeur qui prend deux paramètres 'item' et 'price', de type string et float double précision respectivement.

  • Étape 2 - De plus, nous convertirons les données de l'objet en une chaîne à l'aide de la méthode « toString() ». Ensuite, définissez la méthode "compareTo" avec un objet de la classe "Cart" en paramètre pour comparer l'objet "this" avec l'objet nouvellement créé.

  • Étape 3 - Maintenant, dans la méthode main(), déclarez un objet 'Cart' de la classe LinkedHashMap nommé 'obj' et mettez les détails de l'objet à l'aide de la méthode intégrée nommée 'put()' qui y est stockée. « article » est la clé et sa valeur correspondante est « prix ».

  • Étape 4 - Enfin, définissez une collection ArrayList nommée "SrtList" pour stocker les éléments triés du LinkedHashMap. Maintenant, passez "obj" comme paramètre à la méthode "Collections.sort()" pour effectuer une opération de tri par valeur.

Exemple

import java.util.*;
import java.lang.*;
public class Cart implements Comparable<Cart> {
   String item;
   double price;
   Cart(String item, double price) {
      // this keyword shows these variables belongs to constructor
      this.item = item; 
      this.price = price;
   }
   // method for converting object into string
   public String toString() {
      return "Item: " + item + ", " + "Price: " + price;
   }
   public String getName() { 
      // to retrieve item name
      return this.item;
   }
   // overriding method
   public int compareTo(Cart comp) {
      if(this.price > comp.price) {
         return 1;
      } else {
         return -1;
      }
   }
   public static void main(String[] args) {
      // Declaring collection LinkedHashMap
      LinkedHashMap<String, Cart> obj = new LinkedHashMap<>();
      // Adding object to the obj map
      Cart obj1 = new Cart("Rice", 59);
      obj.put(obj1.getName(), obj1);
      Cart obj2 = new Cart("Milk", 60);
      obj.put(obj2.getName(), obj2);
      Cart obj3 = new Cart("Bread", 45);
      obj.put(obj3.getName(), obj3);
       // printing details obj map in unsorted order
      System.out.println("Elements of the map: ");
      for (String unKey : obj.keySet()) {
         System.out.println(obj.get(unKey));
      }
      List<Cart> SrtList = new ArrayList<>(obj.values());
      Collections.sort(SrtList); 
      // Sorting the object
      // printing details of obj map in sorted order
      System.out.println("Elements of the newly sorted map: ");
      System.out.println(SrtList);
   }
}

Sortie

Elements of the map: 
Item: Rice, Price: 59.0
Item: Milk, Price: 60.0
Item: Bread, Price: 45.0
Elements of the newly sorted map: 
[Item: Bread, Price: 45.0, Item: Rice, Price: 59.0, Item: Milk, Price: 60.0]

Conclusion

Dans la version Java 1.0, une interface similaire a été introduite pour la première fois et fournie dans le package "java.lang". Dans cet article, nous avons exploré l'utilisation de LinkedHashMap et de l'interface Comparable dans les opérations de tri.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer