如何在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介面。