Java Collections排序不接受带有arg的比较器构造函数

时间:2010-04-17 22:26:27

标签: java sorting collections comparator

我收到此行的编译错误:

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

我的定制比较器非常基本;这是签名和构造函数:

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

}

是否有错误,因为我将参数传递给比较器?我需要传递一个论点......

3 个答案:

答案 0 :(得分:2)

没有理由不能将参数传递给该构造函数。您的代码丢失了:

  1. 超类。你的构造函数调用super()所以我假设有一个;以及

  2. compare()界面所需的Comparator方法。

  3. numberOfDocs到底意味着什么?

答案 1 :(得分:1)

您的Comparator需要比较字符串,因为您的ArrayList包含字符串。

public class QuerySorter_TFmaxIDF implements Comparator<Term> {  

必须是

public class QuerySorter_TFmaxIDF implements Comparator<String> {  

答案 2 :(得分:0)

问题在于您的比较器。它用于对Term-s进行排序,但是您通过Collections.sort()方法处理它的数组具有String类型的元素。