如何在Java中使用Comparable介面建立TreeMap物件?


TreeMap是Java集合框架的一個類,它實現了NavigableMap介面。它以樹形結構儲存對映元素,並提供了一種高效的替代方案,可以按排序順序儲存鍵值對。請注意,在建立TreeMap物件時,我們需要使用Comparable介面,以便維護其元素的排序順序。在本文中,我們將討論一些使用Comparable介面建立TreeMap物件的Java程式。

使用Comparable介面建立TreeMap物件的Java程式

在直接跳轉到Java程式之前,讓我們簡要了解一下Comparable介面的基礎知識。

Comparable介面

當我們想要按其自然順序對自定義物件進行排序時,此介面非常有用。例如,它按字典順序對字串進行排序,按數值順序對數字進行排序。此介面位於“java.lang”包中。通常,預設情況下可以使用在此包中定義的類和介面,因此無需顯式匯入此包。

語法

class nameOfclass implements Comparable

這裡,class是建立類的關鍵字,implements是啟用介面提供的功能的關鍵字。

compareTo()

Comparable介面只定義了一個名為“compareTo”的方法,可以重寫該方法以對物件集合進行排序。它提供了比較一個類的物件本身的功能。當“this”物件等於傳遞的物件時,它返回0;如果“this”物件大於傳遞的物件,則返回正值;否則返回負值。

語法

compareTo(nameOfclass nameOfobject); 

由於TreeMap按排序順序以鍵值對的形式儲存其元素,因此我們需要使用Comparable介面,否則將遇到ClassCastException。

示例

以下示例說明了在建立TreeMap中使用Comparable介面。

方法

  • 建立一個實現Comparable介面的類“TrMap”。在其中,宣告兩個變數,並定義此類的建構函式以及兩個引數“item”和“price”,型別分別為字串和雙精度浮點數。

  • 接下來,我們將使用“toString()”方法將物件的資料轉換為字串。然後,定義“compareTo”方法以及作為引數的“TrMap”類物件,以將“this”物件與新建立的物件進行比較。

  • 現在,在main()方法中,宣告一個名為“obj”的TreeMap類的“TrMap”物件,並使用名為“put()”的內建方法將物件詳細資訊儲存到其中。“item”是鍵,其對應的值是“price”。

  • 最後,在foreach迴圈中使用“keySet()”方法檢索並列印與鍵關聯的值。

示例

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));
      }
   }
}

輸出

Elements of the map: 
Item: Kurti, Price: 455
Item: Shirt, Price: 660
Item: TShirt, Price: 495

在上面的輸出中,元素是根據專案名稱排序的。

結論

我們從定義Java集合框架的TreeMap類開始本文,在後面的部分中,我們介紹了Comparable介面及其名為compareTo的內建方法。最後,我們討論了一個Java程式,以便更好地理解在建立TreeMap中使用Comparable介面。

更新於:2023年7月19日

251 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告