Jadual Kandungan
Contoh 3
Output
output
Tatabahasa
Kaedah
Pembanding
输出
结论
Rumah Java javaTutorial Bagaimana untuk menyelesaikan isu java.lang.ClassCastException semasa menggunakan TreeMap dalam Java?

Bagaimana untuk menyelesaikan isu java.lang.ClassCastException semasa menggunakan TreeMap dalam Java?

Aug 20, 2023 pm 11:55 PM
java treemap classcastexception

Bagaimana untuk menyelesaikan isu java.lang.ClassCastException semasa menggunakan TreeMap dalam Java?

TreeMap ialah kelas Rangka Kerja Koleksi Java yang melaksanakan antara muka NavigableMap. Ia menyimpan elemen peta dalam struktur pokok dan menyediakan alternatif yang cekap untuk menyimpan pasangan nilai kunci dalam susunan yang disusun. Sila ambil perhatian bahawa semasa mencipta objek TreeMap, seseorang mesti menggunakan antara muka Sebanding atau antara muka Comparator supaya kita boleh mengekalkan susunan isihan unsurnya, jika tidak, kita akan menemui java.lang.ClassCastException. Dalam artikel ini, kami akan menerangkan cara menggunakan antara muka Comparable dan Comparator untuk menyelesaikan isu ClassCastException dalam TreeMap

Selesaikan masalah java.lang.ClassCastException dalam TreeMap

Mari kita mulakan perbincangan dengan contoh program yang akan menunjukkan kepada kita ClassCastException dalam TreeMap.

Terjemahan bahasa Cina bagi

Contoh 1

ialah:

Contoh 1

Dalam contoh berikut, kami akan cuba menambah objek kelas tersuai pada TreeMap tanpa menggunakan antara muka Comparable dan Comparator untuk menunjukkan situasi apabila pengkompil Java membuang java.lang.ClassCastException.

rreeee Terjemahan bahasa Cina bagi

Output

ialah:

output

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);
   }
}
Salin selepas log masuk

Cara membetulkan ralat java.lang.ClassCastException menggunakan antara muka Setanding

Mari mulakan perbincangan dengan memperkenalkan antara muka Setanding

Antara muka setanding

Antara muka ini sangat berguna apabila kita ingin mengisih objek tersuai dalam susunan semula jadi. Contohnya, ia menyusun rentetan dalam susunan leksikografi dan nombor dalam susunan berangka. Antara muka ini tersedia dalam pakej 'java.lang'. Secara amnya, kelas dan antara muka yang ditakrifkan dalam pakej ini tersedia kepada kami secara lalai, jadi tidak perlu mengimport pakej ini secara eksplisit.

Tatabahasa

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)
Salin selepas log masuk

Di sini, kelas ialah kata kunci untuk mencipta kelas, dan implement ialah kata kunci untuk mendayakan ciri yang disediakan oleh antara muka.

compareTo() diterjemahkan sebagai:

Antara muka Sebanding mentakrifkan hanya satu kaedah bernama 'CompareTo' yang boleh ditindih untuk mengisih koleksi objek Ia memberikan kuasa untuk membandingkan objek kelas dengan dirinya sendiri kepada objek yang dilalui, nilai positif jika objek 'ini' lebih besar sebaliknya nilai negatif.

Tatabahasa

class nameOfclass implements Comparable<nameOfclass>
Salin selepas log masuk
Terjemahan bahasa Cina bagi

Contoh 2

ialah:

Contoh 2

Contoh berikut menunjukkan penggunaan Comparable dalam membetulkan ClassCastException.

Kaedah

  • Buat kelas 'TrMap' yang melaksanakan antara muka Setanding. Di dalam kelas, isytiharkan dua pembolehubah dan tentukan pembina dengan dua parameter jenis rentetan dan dua 'item' dan 'harga'.

  • Bergerak lebih jauh, kami akan menggunakan kaedah 'toString()' untuk menukar data objek kepada rentetan. Kemudian, tentukan kaedah 'compareTo' dan lulus objek kelas 'TrMap' sebagai parameter untuk membandingkan objek 'ini' dengan objek yang baru dibuat

  • Sekarang, dalam kaedah main(), isytiharkan objek kelas TreeMap bernama 'obj' dan simpan butiran objek ke dalamnya menggunakan kaedah terbina bernama 'put()'. 'item' ialah kunci dan nilai yang sepadan ialah 'harga'.

  • Akhir sekali, gunakan kaedah 'keySet()' dalam gelung untuk setiap untuk mendapatkan dan mencetak nilai yang dikaitkan dengan kunci.

rreeee Terjemahan bahasa Cina bagi

Output

ialah:

output

compareTo(nameOfclass nameOfobject);
Salin selepas log masuk

Cara membetulkan masalah java.lang.ClassCastException menggunakan Comparator

Mula-mula, mari kita perkenalkan antara muka Pembanding.

Pembanding

Seperti namanya, ia digunakan untuk membandingkan sesuatu. Di Java, Comparator ialah antara muka untuk menyusun objek tersuai. Kita boleh menulis logik kita sendiri untuk mengisih objek yang ditentukan dalam kaedah terbina dalamnya bernama 'compare()'. Kaedah ini menerima dua objek sebagai parameter dan mengembalikan nilai integer. Melalui nilai integer ini, Comparator menentukan objek yang lebih besar

Tatabahasa

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));
      }
   }
}
Salin selepas log masuk
Terjemahan bahasa Cina bagi

Contoh 3

ialah:

Contoh 3

Contoh di bawah menunjukkan penggunaan Comparator semasa membetulkan ClassCastException.

Kaedah

  • Mula-mula, import pakej 'java.util' supaya kita boleh menggunakan TreeSet

  • Buat kelas yang dipanggil 'TrMap'. Di dalam kelas, isytiharkan dua pembolehubah dan tentukan pembina yang mempunyai dua parameter 'item' dan 'harga', iaitu jenis rentetan dan jenis integer masing-masing.

  • Bergerak lebih jauh, kami akan menggunakan kaedah 'toString()' untuk menukar data objek kepada rentetan

  • Kemudian, tentukan kelas lain 'Comp' yang melaksanakan antara muka Comparator, dan gunakan kaedah 'compare()' di dalamnya untuk mengisih TreeMap dalam tertib menaik.

  • Dalam kaedah 'main()', buat koleksi TreeMap dengan menghantar contoh kelas 'Comp' untuk mengisih

    • Akhir sekali, gunakan kaedah 'put()' untuk menyimpan beberapa elemen ke dalam koleksi TreeMap dan kemudian mencetak hasilnya.

    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);
       }
    }
    
    Salin selepas log masuk

    Output

    的中文翻译为:

    输出

    Elements of the map: {Item: TShirt, Price: 495=1, Item: Shirt, Price: 660=2}
    
    Salin selepas log masuk

    结论

    在本文中,我们首先定义了TreeMap类,然后介绍了TreeMap中的ClassCastException。在下一部分中,我们讨论了可以帮助解决这个ClassCastException的Comparator和Comparable接口。然后,我们看到了三个示例程序,展示了ClassCastException以及如何修复这个异常。

    Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan isu java.lang.ClassCastException semasa menggunakan TreeMap dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Nombor Sempurna di Jawa Nombor Sempurna di Jawa Aug 30, 2024 pm 04:28 PM

Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Weka di Jawa Weka di Jawa Aug 30, 2024 pm 04:28 PM

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Nombor Smith di Jawa Nombor Smith di Jawa Aug 30, 2024 pm 04:28 PM

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Soalan Temuduga Java Spring Soalan Temuduga Java Spring Aug 30, 2024 pm 04:29 PM

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Cuti atau kembali dari Java 8 Stream Foreach? Cuti atau kembali dari Java 8 Stream Foreach? Feb 07, 2025 pm 12:09 PM

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

TimeStamp to Date in Java TimeStamp to Date in Java Aug 30, 2024 pm 04:28 PM

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Program Java untuk mencari kelantangan kapsul Program Java untuk mencari kelantangan kapsul Feb 07, 2025 am 11:37 AM

Kapsul adalah angka geometri tiga dimensi, terdiri daripada silinder dan hemisfera di kedua-dua hujungnya. Jumlah kapsul boleh dikira dengan menambahkan isipadu silinder dan jumlah hemisfera di kedua -dua hujungnya. Tutorial ini akan membincangkan cara mengira jumlah kapsul yang diberikan dalam Java menggunakan kaedah yang berbeza. Formula volum kapsul Formula untuk jumlah kapsul adalah seperti berikut: Kelantangan kapsul = isipadu isipadu silinder Dua jumlah hemisfera dalam, R: Radius hemisfera. H: Ketinggian silinder (tidak termasuk hemisfera). Contoh 1 masukkan Jejari = 5 unit Ketinggian = 10 unit Output Jilid = 1570.8 Unit padu menjelaskan Kirakan kelantangan menggunakan formula: Kelantangan = π × r2 × h (4

Cipta Masa Depan: Pengaturcaraan Java untuk Pemula Mutlak Cipta Masa Depan: Pengaturcaraan Java untuk Pemula Mutlak Oct 13, 2024 pm 01:32 PM

Java ialah bahasa pengaturcaraan popular yang boleh dipelajari oleh pembangun pemula dan berpengalaman. Tutorial ini bermula dengan konsep asas dan diteruskan melalui topik lanjutan. Selepas memasang Kit Pembangunan Java, anda boleh berlatih pengaturcaraan dengan mencipta program "Hello, World!" Selepas anda memahami kod, gunakan gesaan arahan untuk menyusun dan menjalankan program, dan "Hello, World!" Pembelajaran Java memulakan perjalanan pengaturcaraan anda, dan apabila penguasaan anda semakin mendalam, anda boleh mencipta aplikasi yang lebih kompleks.

See all articles