2010-04-17 43 views
1

我得到這一行編譯器錯誤:Java集合排序不接受比較構造與ARG

Collections.sort(terms, new QuerySorter_TFmaxIDF(myInteger));

我的個性比較是非常基本的;這裏的簽名和構造:

public class QuerySorter_TFmaxIDF implements Comparator<Term>{ 
private int numberOfDocs; 
QuerySorter_TFmaxIDF(int n){ 
    super(); 
    numberOfDocs = n; 
} 

}

是否有錯誤,因爲我傳遞一個參數到比較?我需要傳遞一個參數...

+2

構造函數的參數應該沒有關係。你得到的錯誤是什麼,變量「terms」的定義是什麼? – oedo 2010-04-17 22:28:00

+0

「我收到編譯器錯誤」 - 錯誤是什麼?你怎麼能說出這樣的話並將它拋出?請幫助我們幫助你。 – polygenelubricants 2010-04-18 07:10:18

回答

0

問題在於您的比較。它用於對Term-s進行排序,但是您通過Collections.sort()方法處理的數組具有String類型的元素。

2

沒有理由不能將參數傳遞給該構造函數。您的代碼缺失:

  1. 超類。你的構造函數調用super()所以我假設有一個;和

  2. 接口所​​需的compare()方法。

numberOfDocs究竟意味着在這裏做什麼?

+0

@cletus compare()已實現,但它太大而無法發佈此評論。你是對的,我不需要super()調用,但是我仍然沒有得到相同的錯誤。 numberOfDocs在比較()方法用於計算 @oedo錯誤是: 找不到符號 方法排序(java.util.ArrayList中,projectPackage.QuerySorter_TFmaxIDF) – user276712 2010-04-17 22:50:56

1

您的比較器需要比較字符串,因爲您的ArrayList包含字符串。

public class QuerySorter_TFmaxIDF implements Comparator<Term> { 

必須

public class QuerySorter_TFmaxIDF implements Comparator<String> {