如何在Java中向TreeSet新增自定義類物件?


TreeSet是Java集合框架的一個類,它實現了SortedSet介面。請記住,它以升序儲存元素,並且不允許重複值。在向TreeSet新增自定義類物件時,我們需要堅持這個條件,否則會遇到ClassCastException異常。這裡,自定義類物件是指使用建構函式建立的使用者定義的物件。

向TreeSet新增自定義類物件的程式

在上一節中,我們討論瞭如果我們沒有遵循TreeSet的條件,將會得到ClassCastException異常。為了避免這種情況,我們需要實現Comparable介面。讓我們快速討論一下這個介面。

Comparable介面

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

語法

class nameOfclass implements Comparable<nameOfclass>

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

compareTo()

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

語法

compareTo(nameOfclass nameOfobject);

方法一

  • 首先,匯入“java.util”包,以便我們可以使用TreeSet。

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

  • 定義“compareTo”方法以及作為引數的類“Cart”的物件,以比較“this”物件與新建立的物件。

  • 現在,在main()方法中,宣告一個名為“trSet”的類“Cart”物件,其集合型別為TreeSet,並使用名為“add()”的內建方法將物件詳細資訊儲存到集合中。

  • 最後,使用for each迴圈列印TreeSet的物件。

示例

以下示例說明了如何將自定義類物件新增到TreeSet。

import java.util.*;
public class Cart implements Comparable <Cart> {
   String item;
   int price;
   Cart(String item, int price) { // constructor
      // this keyword shows these variables belong to constructor
      this.item = item;
      this.price = price;
   }
   // overriding method
   public int compareTo(Cart comp) {
      if(this.price > comp.price) { // performing comparison
         return 1;
      } else {
         return -1;
      }
   }
   public static void main(String[] args) {
   
      // Declaring collection TreeSet
      TreeSet <Cart> trSet = new TreeSet <Cart>();
      
      // Adding object to the collection
      trSet.add(new Cart("Rice", 59));
      trSet.add(new Cart("Milk", 60));
      trSet.add(new Cart("Bread", 45));
      trSet.add(new Cart("Peanut", 230));
      trSet.add(new Cart("Butter", 55));
      
      // to print the objects
      for (Cart print : trSet) { 
         System.out.println("Item: " + print.item + ", " + "Price: " + print.price);
      }
   }
}

輸出

Item: Bread, Price: 45
Item: Butter, Price: 55
Item: Rice, Price: 59
Item: Milk, Price: 60
Item: Peanut, Price: 230

結論

我們從介紹實現SortedSet介面的TreeSet類開始這篇文章。在下一節中,我們瞭解了Comparable介面及其內建方法“compareTo()”。因為TreeSet集合只接受可比較的物件,所以它們是必需的。最後,我們討論了一個Java程式,用於將自定義類物件新增到TreeSet。

更新於:2023年7月20日

783 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告