在Java中透過實現Comparable介面排序自定義物件
Java 提供了各種排序演算法和方法,可以幫助我們排序陣列、列表或任何集合。Comparable 介面是一種額外的方法,當我們想要按其自然順序排序自定義物件時非常有用。例如,它按字典順序排序字串,按數字順序排序數字。此介面位於 'java.lang' 包中。
在這篇文章中,我們將透過示例學習 Comparable 介面的使用。此外,我們還將討論 Collection 介面的一些方法和類,這些方法和類將幫助我們使用 Comparable 介面對自定義物件進行排序。
透過實現 Comparable 介面進行排序
Comparable 介面的語法
class nameOfclass implements Comparable<nameOfclass>
在進入程式之前,讓我們瞭解一些類和方法。
compareTo() 方法
Comparable 介面只定義了一個名為 'compareTo' 的方法,可以重寫該方法以對物件的集合進行排序。它賦予了比較一個類的物件自身的能力。當“this”物件等於傳入的物件時返回 0,如果“this”物件大於傳入的物件則返回正值,否則返回負值。
語法
compareTo( nameOfclass nameOfobject );
Collections.sort() 方法
Collection 介面的 'Collections' 類提供了一個名為 'Collections.sort()' 的靜態方法,該方法可以對指定集合(如 ArrayList 或 LinkedList)的元素進行排序。它位於 'java.util' 包中。
語法
Collections.sort( nameOfcollection );
演算法
步驟 1 − 我們將從匯入 'java.util' 包開始,以便在程式中使用 'sort()' 方法。
步驟 2 − 建立一個實現 Comparable 介面的類 'Cart'。在其中,宣告兩個變數,並定義此類的建構函式以及兩個引數 'item' 和 'price',型別分別為字串和整數。
步驟 3 − 接下來,我們將使用 'toString()' 方法將物件的資料轉換為字串。然後,定義 'compareTo' 方法以及一個作為引數的 'Cart' 類物件,以將 'this' 物件與新建立的物件進行比較。
步驟 4 − 現在,在 main() 方法中,宣告一個名為 'obj' 的集合型別 ArrayList 的 'Cart' 類物件,並使用名為 'add()' 的內建方法將物件詳細資訊儲存到集合中。
步驟 5 − 最後,我們將 'obj' 作為引數傳遞給 'Collections.sort()' 方法以執行排序操作,並使用 for each 迴圈列印結果。
示例
import java.util.*;
public class Cart implements Comparable<Cart> {
String item;
double price;
Cart(String item, int price) {
// this keyword shows these variables belongs to constructor
this.item = item;
this.price = price;
}
// method for converting object into string
public String toString() {
return "Item: " + item + ", " + "Price: " + price;
}
// overriding method
public int compareTo(Cart comp) {
if(this.price > comp.price) {
return 1;
} else {
return -1;
}
}
public static void main(String[] args) {
// Declaring collection arraylist
List<Cart> obj = new ArrayList<>();
// Adding object to the collection
obj.add(new Cart("Rice", 59));
obj.add(new Cart("Milk", 60));
obj.add(new Cart("Bread", 45));
obj.add(new Cart("Peanut", 230));
obj.add(new Cart("Butter", 55));
System.out.println("The original Objects: ");
// to print unsorted list of objects
for(Cart print : obj) {
System.out.println(print);
}
Collections.sort(obj);
// Sorting the object
System.out.println("The newly sorted Objects: ");
// to print newly sorted list of objects
for(Cart print : obj) {
System.out.println(print);
}
}
}
輸出
The original Objects: Item: Rice, Price: 59.0 Item: Milk, Price: 60.0 Item: Bread, Price: 45.0 Item: Peanut, Price: 230.0 Item: Butter, Price: 55.0 The newly sorted Objects: Item: Bread, Price: 45.0 Item: Butter, Price: 55.0 Item: Rice, Price: 59.0 Item: Milk, Price: 60.0 Item: Peanut, Price: 230.0
結論
在 Java 1.0 版本中,Comparable 介面首次引入並可在 'java.lang' 包中使用。通常,在此包中定義的類、方法和介面預設情況下可用,因此在使用前無需匯入。本文解釋了 Comparable 介面的實現,並且我們還了解了其內建方法 'compareTo()' 的用法。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP