使用 Java 中 TreeSet 的排序邏輯獲取集合中的最大值和最小值元素


TreeSet 是 Java 集合框架的一個類,它實現了 SortedSet 介面。它按升序儲存元素,並且不允許重複值,因此訪問和檢索時間變得更快。由於此出色功能,TreeSet 經常用於儲存需要快速搜尋的大量資訊。我們將使用 Comparable 介面對給定的 TreeSet 進行排序,然後使用內建方法嘗試從該 TreeSet 中獲取最大值和最小值元素。

從 TreeSet 獲取最大值和最小值元素的 Java 程式

在深入研究程式之前,讓我們先熟悉一些概念。

Comparable 介面

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

語法

class nameOfclass implements Comparable<nameOfclass>

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

compareTo()

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

語法

compareTo(nameOfclass nameOfobject);

last() 和 first() 方法

這兩種方法都與 TreeSet 的物件一起使用,並且不帶任何引數。“last()”方法返回指定 TreeSet 的結束元素,“first()”方法返回第一個位置的元素。由於 TreeSet 按升序儲存其元素,因此最後一個元素被認為是最大值元素,反之亦然,最小值。

方法

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

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

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

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

  • 最後,分別呼叫內建方法“last()”和“first()”以獲取最大值和最小值。

示例

以下示例演示瞭如何從 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 String toString() {
      return "Item: " + this.item + ", Price: " + this.price;
   }
   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);
      }
      // calling in-built methods to print required results
      System.out.println("Element having highest value: " + trSet.last());
      System.out.println("Element having lowest value: " + trSet.first());
   }
}

輸出

Item: Bread, Price: 45
Item: Butter, Price: 55
Item: Rice, Price: 59
Item: Milk, Price: 60
Item: Peanut, Price: 230
Element having highest value: Item: Peanut, Price: 230
Element having lowest value: Item: Bread, Price: 45

結論

我們從定義 Java 集合框架的 TreeSet 類開始本文,在下一部分中,我們發現了 Comparable 介面和一些內建方法,這些方法幫助我們使用 TreeSet 上的排序邏輯從集合中獲取最大值和最小值元素。

更新於: 2023 年 7 月 20 日

75 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告