簡體   English   中英

通用比較器

[英]Generic Comparator

這是一個學校項目。 我有一個Query<E>類,它包含一個屬於Query條件的元素。 因此,如果它是一個GreaterQuery並且元素是10,則所有大於10的值都會超過該條件。

Query對象的構造函數接受元素,並使用Comparator對象測試條件。 如果傳入null,我需要創建一個Comparator用於比較。

我有一個match(E element)方法來測試條件。 這是它的骨架版本:

public boolean matches(E element)
{
    if (comparator == null)
    {

    }
}

我認為我能做的是在if語句中寫一個匿名的Comparator類,雖然我不確定這是否可行。 我遇到的另一個問題是如何在不了解它們的情況下與E對象進行比較。 此外,我不確定這一點,但可能存在E extends Comparable的前提條件。 現在已經很晚了,如果這沒有道理,我會道歉。 但任何幫助將不勝感激。

如果E保證實現Comparable<E> ,則可以執行以下操作:

if (comparator == null) {
    comparator = new Comparator<E>() {
        @Override
        public int compare(E lhs, E rhs) {
            return lhs.compareTo(rhs);
        }
    };
}

從Java 8開始,標准庫中有一個方法可以完成Chris的答案中顯示的內容:

if (comparator == null) {
    comparator = Comparator.naturalOrder();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM