


Comment résoudre le problème java.lang.ClassCastException lors de l'utilisation de TreeMap en Java ?
TreeMap est une classe de Java Collection Framework qui implémente l'interface NavigableMap. Il stocke les éléments de la carte dans une structure arborescente et constitue une alternative efficace au stockage des paires clé-valeur dans un ordre trié. Veuillez noter que lors de la création d'un objet TreeMap, il faut utiliser l'interface Comparable ou l'interface Comparator afin que nous puissions maintenir l'ordre de tri de ses éléments, sinon nous rencontrerons une java.lang.ClassCastException. Dans cet article, nous expliquerons comment utiliser les interfaces Comparable et Comparator pour résoudre les problèmes ClassCastException dans TreeMap.
Correction du problème java.lang.ClassCastException dans TreeMap
Commençons la discussion avec un exemple de programme qui nous montrera ClassCastException dans TreeMap.
La traduction chinoise deExemple 1
est :Exemple 1
Dans l'exemple suivant, nous essaierons d'ajouter un objet de classe personnalisé à un TreeMap sans utiliser les interfaces Comparable et Comparator pour montrer la situation dans laquelle le compilateur Java lance java.lang.ClassCastException.
import java.util.*; public class TrMap { String item; int price; TrMap(int price, String item) { // this keyword shows these variables belong to constructor this.item = item; this.price = price; } // method for converting object into string public String toString() { return "Item: " + item + ", " + "Price: " + price; } public static void main(String[] args) { // Declaring collection TreeMap TreeMap<TrMap, Integer> obj = new TreeMap<>(); // Adding object to the obj map obj.put(new TrMap(495, "TShirt"), 1); obj.put(new TrMap(660, "Shirt"), 2); // printing details obj map System.out.println("Elements of the map: " + obj); } }
Output
est :output
Exception in thread "main" java.lang.ClassCastException: class TrMap cannot be cast to class java.lang.Comparable (TrMap is in unnamed module of loader 'app'; java.lang.Comparable is in module java.base of loader 'bootstrap') at java.base/java.util.TreeMap.compare(TreeMap.java:1569) at java.base/java.util.TreeMap.addEntryToEmptyMap(TreeMap.java:776) at java.base/java.util.TreeMap.put(TreeMap.java:785) at java.base/java.util.TreeMap.put(TreeMap.java:534) at TrMap.main(TrMap.java:18)
Comment corriger l'erreur java.lang.ClassCastException à l'aide de l'interface comparable
Commençons la discussion en présentant l'interface Comparable
Interface comparable
Cette interface est très utile lorsque l'on souhaite trier des objets personnalisés dans l'ordre naturel. Par exemple, il trie les chaînes par ordre lexicographique et les nombres par ordre numérique. Cette interface est disponible dans le package 'java.lang'. Généralement, les classes et interfaces définies dans ce package sont disponibles par défaut, il n'est donc pas nécessaire d'importer explicitement ce package.
Grammaire
class nameOfclass implements Comparable<nameOfclass>
Ici, class est le mot-clé pour créer une classe, et Implements est le mot-clé pour activer les fonctionnalités fournies par l'interface.
compareTo() se traduit par :
L'interface Comparable ne définit qu'une seule méthode nommée 'CompareTo' qui peut être surchargée afin de trier la collection d'objets. Elle donne le pouvoir de comparer les objets d'une classe à elle-même. Elle renvoie 0 lorsque 'cet' objet est égal. à l'objet passé, une valeur positive si 'cet' objet est supérieur sinon une valeur négative.
Grammaire
compareTo(nameOfclass nameOfobject);
Exemple 2
est :Exemple 2
L'exemple suivant démontre l'utilisation de Comparable pour corriger ClassCastException.
Méthode
Créez une classe 'TrMap' qui implémente l'interface Comparable. A l'intérieur de la classe, déclarez deux variables et définissez un constructeur avec deux paramètres de type chaîne et double 'item' et 'price'.
En allant plus loin, nous utiliserons la méthode 'toString()' pour convertir les données de l'objet en chaîne. Ensuite, définissez la méthode 'compareTo' et passez un objet de classe 'TrMap' comme paramètre pour comparer l'objet 'this' avec l'objet nouvellement créé.
Maintenant, dans la méthode main(), déclarez un objet de la classe TreeMap nommé 'obj' et stockez-y les détails de l'objet à l'aide de la méthode intégrée nommée 'put()'. « article » est la clé et sa valeur correspondante est « prix ».
Enfin, utilisez la méthode 'keySet()' dans une boucle for-each pour récupérer et imprimer la valeur associée à la clé.
import java.util.*; import java.lang.*; public class TrMap implements Comparable<TrMap> { String item; int price; TrMap(String item, int price) { // this keyword shows these variables belong 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() { return this.item; } // overriding method public int compareTo(TrMap comp) { return this.item.compareTo(comp.item); } public static void main(String[] args) { // Declaring collection TreeMap TreeMap<String, TrMap> obj = new TreeMap<>(); // Adding object to the obj map TrMap obj1 = new TrMap("TShirt", 495); obj.put(obj1.getName(), obj1); TrMap obj2 = new TrMap("Shirt", 660); obj.put(obj2.getName(), obj2); TrMap obj3 = new TrMap("Kurti", 455); obj.put(obj3.getName(), obj3); // printing details obj map System.out.println("Elements of the map: "); for (String unKey : obj.keySet()) { System.out.println(obj.get(unKey)); } } }
Output
est :output
Elements of the map: Item: Kurti, Price: 455 Item: Shirt, Price: 660 Item: TShirt, Price: 495
Comment résoudre le problème java.lang.ClassCastException à l'aide de Comparator
Tout d’abord, présentons l’interface Comparator.
Comparateur
Comme son nom l’indique, il est utilisé pour comparer quelque chose. En Java, Comparator est une interface permettant de trier des objets personnalisés. Nous pouvons écrire notre propre logique pour trier les objets spécifiés dans sa méthode intégrée nommée 'compare()'. Cette méthode accepte deux objets comme paramètres et renvoie une valeur entière. Grâce à cette valeur entière, le Comparateur détermine quel objet est le plus grand
Grammaire
class nameOfComparator implements Comparator< TypeOfComparator >() { compare( type object1, type object2 ) { // logic for comparison } }
Exemple 3
est :Exemple 3
L'exemple ci-dessous montre l'utilisation de Comparator lors de la correction de ClassCastException.
Méthode
Tout d'abord, importez le package 'java.util' pour que nous puissions utiliser TreeSet
Créez une classe appelée « TrMap ». À l'intérieur de la classe, déclarez deux variables et définissez un constructeur qui a deux paramètres « article » et « prix », qui sont respectivement de type chaîne et de type entier.
En allant plus loin, nous utiliserons la méthode 'toString()' pour convertir les données de l'objet en chaîne
Ensuite, définissez une autre classe 'Comp' qui implémente l'interface Comparator et utilisez la méthode 'compare()' pour trier le TreeMap par ordre croissant.
Dans la méthode 'main()', créez une collection TreeMap en passant une instance de la classe 'Comp' pour le tri
Enfin, utilisez la méthode 'put()' pour stocker certains éléments dans la collection TreeMap, puis imprimez le résultat.
import java.util.*; class TrMap { String item; int price; TrMap(int price, String item) { // this keyword shows these variables belong 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() { return this.item; } } // use of comparator interface class Comp implements Comparator<TrMap> { // logic to sort public int compare(TrMap i, TrMap j) { if(i.price > j.price) { return 1; } else { return -1; } } } public class Example2 { public static void main(String[] args) { // Declaring collection TreeMap TreeMap<TrMap, Integer> obj = new TreeMap<>(new Comp()); // Adding object to the obj map obj.put(new TrMap(495, "TShirt"), 1); obj.put(new TrMap(660, "Shirt"), 2); // printing details obj map System.out.println("Elements of the map: " + obj); } }
Output
的中文翻译为:输出
Elements of the map: {Item: TShirt, Price: 495=1, Item: Shirt, Price: 660=2}
结论
在本文中,我们首先定义了TreeMap类,然后介绍了TreeMap中的ClassCastException。在下一部分中,我们讨论了可以帮助解决这个ClassCastException的Comparator和Comparable接口。然后,我们看到了三个示例程序,展示了ClassCastException以及如何修复这个异常。
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Guide du nombre parfait en Java. Nous discutons ici de la définition, comment vérifier le nombre parfait en Java ?, des exemples d'implémentation de code.

Guide de Weka en Java. Nous discutons ici de l'introduction, de la façon d'utiliser Weka Java, du type de plate-forme et des avantages avec des exemples.

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.
