可比與比較器:可比與比較器之間的區別

已發表: 2020-12-30

目錄

可比和比較器:概述

Comparable 和comparator 都是Java 編程語言中的接口,用於確定實現類的行為。 雖然 Comparable 用於自然排序的對象,但 Comparator 接口通過考慮對象的屬性來實現排序。 此外,Comparator 排序考慮了兩個不同類的對象,而 Comparable 使用“this”引用比較對象。

現在,我們已經建立了兩個接口工作的基本原理,讓我們看看兩者之間的區別。

可比和比較器之間的區別

排序方法

可比

它使用 compareTo() 函數進行排序。 這是 Comparable 排序界面中存在的唯一方法。

compareTo(Object O) 將一個對像作為參數並將其與另一個相同類型的對象進行比較。 如果一個對像是一個字符串,你只能將它與另一個相同類型的對象進行比較。 int 對像等情況也是如此。 compareTo() 根據排序結果返回一個負數、正數或零整數值。

比較器

Comparator 中有兩種方法可以對元素進行排序:compare() 和 equals()。

compare(Object O1, Object O2) 考慮兩個參數作為輸入並提供所需的輸出。 它返回一個整數來指示第一個參數與第二個參數的比較。

  • 如果 O1 小於 O2,則返回一個負整數。
  • 如果 O1 大於 O2,它將返回一個正整數。
  • 如果 O1 等於 O2,則返回 0。

equals(Object) 考慮一個對像作為輸入並將其與比較器進行比較。 如果 Object 等於 Comparator,則返回 True。 它還確保訂單不會改變。

使用的包裝

可比

它存在於 Java 的 java.lang 包中。

比較器

它存在於 Java 的 java.util 包中。

排序和分類

可比

  • 它考慮了遵循自然排序的對象,即傾向於自行排序。 例如,姓名、價格、工資、卷號、年齡等的字母順序或數字順序。
  • 兩個對象屬於同一類也很重要。
  • Comparable 接口將“this”引用與指定的對象進行比較。
  • 使用 Comparable 排序會影響實際的類。

比較器

  • 該接口主要用於對指定對象的屬性進行排序。 它們不需要具有自然順序; 它可以定制。
  • 排序的邏輯需要在不同的類中比較考慮的兩個類的對象的屬性。
  • 實際類不受影響。

序列和集合

可比

  • 它僅支持單個排序序列。 這意味著您只能考慮集合的一個元素或屬性,例如卷號或年齡或等級。
  • 要對對象、數組或列表的集合進行排序,您可以使用 Collection。 排序(列表)或數組。 排序(列表)。 這將使對象按其自然順序排列

比較器

  • 它支持多種排序順序。 這意味著您可以考慮集合的多個元素或屬性,例如卷號、年齡和排名。
  • 您可以使用 collection.sort(list, compare) 對集合進行排序。

這是 Comparable 和 Comparator 之間所有差異的摘要

可比比較器
包裹
Java語言Java.util
排序方法
相比於() 比較()
訂購
自然排序定制訂購
對像類型
比較的對象必須是同一類型考慮不同類的對象
對班級的影響
類被修改不影響上課
排序順序
單一排序順序多重排序順序

報名參加世界頂尖大學的軟件開發課程獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

在 Java 中使用 Comparable 和 Comparator 時要記住的事情

  • 如果您要銷售以執行特定類的標準比較,可比較接口是選擇的接口。
  • 比較器允許使用 lambda。
  • 您可以使用 compareTo() 方法來實現 Comparator 和 Comparable。
  • 如果您正在尋求排序的靈活性,建議使用比較器接口

結論

在大多數現實生活場景中,當我們進行排序時,我們通常會考慮各種參數。 此外,由於在默認排序中使用可比較的結果並且不能動態更改,因此它不如 Comparator 實用,它允許您自定義和選擇不同的排序方法以滿足您的要求。 僅出於這個原因,Comparator 發現了比 Comparable 更多的實際應用。

閱讀:一些有趣的 Java 項目要查看

如果您有興趣了解有關 Java、全棧開發的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發執行 PG 計劃,該計劃專為工作專業人士設計,提供 500 多個小時的嚴格培訓、9 個以上的項目,和任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。

什麼是編程語言中的接口?

學習Java容易嗎?

Java 引入了面向對象的編程範式,即使是最缺乏經驗的 Java 開發人員也可以像經驗豐富的開發人員一樣思考和創建程序。 Java 起源於當今也廣泛使用的 C 和 C++ 編程語言。 雖然 Java 在功能方面與 C 和 C++ 有一些相似之處,但它已經發展成為一種對用戶更加友好的語言。 因為面向對象的編程使得維護和更改現有代碼變得簡單,所以即使是新手程序員也可能開始從事公司項目。 新開發人員不太可能遇到無法預料的運行時錯誤,因為在執行 Java 之前會驗證錯誤。 Java 迫使程序員正確指定所有代碼元素,從而隨著應用程序的增長減少出錯的機會。

為什麼在 Java 中需要排序?

排序是指一組技術,用於重新排列數組中元素的位置,使它們都按升序或降序排列。 一個體面的排序算法還必須確保具有相同值的元素以相同的順序保留在已排序的數組中。 排序是深入理解數據結構和算法所必需的。 Java 作為一種編程語言非常通用,可用於實現多種排序算法。 這些算法中的大多數都非常通用,可以以遞歸和迭代方式實現。