搜尋
首頁Javajava教程使用Java中TreeSet的排序邏輯來取得集合中的最大值與最小值元素

使用Java中TreeSet的排序邏輯來取得集合中的最大值與最小值元素

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

從 TreeSet 取得最高和最低值元素的 Java 程式

在進入程式之前,讓我們先熟悉一些概念

類似的介面

當我們想要按自訂物件的自然順序對它們進行排序時,此介面非常有用。例如,它按字典順序對字串進行排序,並按數字順序對數字進行排序。該介面在“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 Interface 的類別「Cart」。在其中宣告兩個變數並定義該類別的建構函式以及分別為字串和整數類型的兩個參數“item”和“price”。

  • 定義「compareTo」方法以及「Cart」類別的物件作為參數,以將「this」物件與新建立的物件進行比較。

  • 現在,在main() 方法中,宣告集合類型TreeSet 的類別「Cart」的名為「trSet」的對象,並使用名為「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 Collection Framework 的TreeSet 類,在下一節中,我們發現了Comparable 介面和一些內建方法,它們幫助我們使用TreeSet 上的排序邏輯從Set 中取得最高和最低值元素.

以上是使用Java中TreeSet的排序邏輯來取得集合中的最大值與最小值元素的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:tutorialspoint。如有侵權,請聯絡admin@php.cn刪除
平台獨立性如何使企業級的Java應用程序受益?平台獨立性如何使企業級的Java應用程序受益?May 03, 2025 am 12:23 AM

Java在企業級應用中被廣泛使用是因為其平台獨立性。 1)平台獨立性通過Java虛擬機(JVM)實現,使代碼可在任何支持Java的平台上運行。 2)它簡化了跨平台部署和開發流程,提供了更大的靈活性和擴展性。 3)然而,需注意性能差異和第三方庫兼容性,並採用最佳實踐如使用純Java代碼和跨平台測試。

考慮到平台獨立性,Java在物聯網(物聯網)設備的開發中扮演什麼角色?考慮到平台獨立性,Java在物聯網(物聯網)設備的開發中扮演什麼角色?May 03, 2025 am 12:22 AM

JavaplaysigantroleiniotduetoitsplatFormentence.1)itallowscodeTobewrittenOnCeandrunonVariousDevices.2)Java'secosystemprovidesuseusefidesusefidesulylibrariesforiot.3)

描述一個方案,您在Java中遇到了一個特定於平台的問題以及如何解決。描述一個方案,您在Java中遇到了一個特定於平台的問題以及如何解決。May 03, 2025 am 12:21 AM

ThesolutiontohandlefilepathsacrossWindowsandLinuxinJavaistousePaths.get()fromthejava.nio.filepackage.1)UsePaths.get()withSystem.getProperty("user.dir")andtherelativepathtoconstructthefilepath.2)ConverttheresultingPathobjecttoaFileobjectifne

Java平台獨立對開發人員有什麼好處?Java平台獨立對開發人員有什麼好處?May 03, 2025 am 12:15 AM

Java'splatFormIndenceistificantBecapeitAllowSitallowsDevelostWriTecoDeonCeandRunitonAnyPlatFormwithAjvm.this“ writeonce,runanywhere”(era)櫥櫃櫥櫃:1)交叉plat formcomplibility cross-platformcombiblesible,enablingDeploymentMentMentMentMentAcrAptAprospOspOspOssCrossDifferentoSswithOssuse; 2)

將Java用於需要在不同服務器上運行的Web應用程序的優點是什麼?將Java用於需要在不同服務器上運行的Web應用程序的優點是什麼?May 03, 2025 am 12:13 AM

Java適合開發跨服務器web應用。 1)Java的“一次編寫,到處運行”哲學使其代碼可在任何支持JVM的平台上運行。 2)Java擁有豐富的生態系統,包括Spring和Hibernate等工具,簡化開發過程。 3)Java在性能和安全性方面表現出色,提供高效的內存管理和強大的安全保障。

JVM如何促進Java的'寫作一次,在任何地方運行”(WORA)功能?JVM如何促進Java的'寫作一次,在任何地方運行”(WORA)功能?May 02, 2025 am 12:25 AM

JVM通過字節碼解釋、平台無關的API和動態類加載實現Java的WORA特性:1.字節碼被解釋為機器碼,確保跨平台運行;2.標準API抽像操作系統差異;3.類在運行時動態加載,保證一致性。

Java的較新版本如何解決平台特定問題?Java的較新版本如何解決平台特定問題?May 02, 2025 am 12:18 AM

Java的最新版本通過JVM優化、標準庫改進和第三方庫支持有效解決平台特定問題。 1)JVM優化,如Java11的ZGC提升了垃圾回收性能。 2)標準庫改進,如Java9的模塊系統減少平台相關問題。 3)第三方庫提供平台優化版本,如OpenCV。

說明JVM執行的字節碼驗證的過程。說明JVM執行的字節碼驗證的過程。May 02, 2025 am 12:18 AM

JVM的字節碼驗證過程包括四個關鍵步驟:1)檢查類文件格式是否符合規範,2)驗證字節碼指令的有效性和正確性,3)進行數據流分析確保類型安全,4)平衡驗證的徹底性與性能。通過這些步驟,JVM確保只有安全、正確的字節碼被執行,從而保護程序的完整性和安全性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。