我必须订购一个集合,然后使用一个比较器

import java.util.*;

public class OpereComparatorAuthor implements Comparator<Opera>{

    public int compare(Opera left,Opera right){
        return left.getArtist().compareTo(right.getArtist());
    }
}


但是当我从另一个班级叫它时:

Collections.sort(ordbyauthor,OpereComparatorAuthor);


我收到此错误:

cannot find symbol
symbol  : variable OpereComparatorAuthor
location: class Museo
    Collections.sort(ordbyauthor,OpereComparatorAuthor);


为什么?

最佳答案

您必须传递比较器的对象:

Collections.sort(ordbyauthor, new OpereComparatorAuthor());


更新:

这只是一个建议。在这种情况下,可以使用匿名类(我认为这是一个不错的选择),而不是定义类。

例如

//I am using Sala here instead of Opera as per your comment
Collections.sort(ordbyauthor, new Comparator<Sala>(){
    @Override
    public int compare(Sala left, Sala right) {
        //do your comparision here according to your requirement
        //then return the result
    }
});

10-06 02:41