Maison >Java >javaDidacticiel >Tri de LinkedHashMap par valeur à l'aide de l'interface 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.
Avant de passer directement au processus de tri, examinons quelques concepts -
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 -
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é.
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".
class nameOfclass implements Comparable<nameOfclass>
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.
compareTo(nameOfclass nameOfobject);
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".
Collections.sort(nameOfcollection);
É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.
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); } }
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]
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!