Java 未找到比较器

Java 未找到比较器,java,comparator,Java,Comparator,我必须订购一个集合,然后使用比较器 import java.util.*; public class OpereComparatorAuthor implements Comparator<Opera>{ public int compare(Opera left,Opera right){ return left.getArtist().compareTo(right.getArtist()); } } 我收到这个错误: canno

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

import java.util.*;

public class OpereComparatorAuthor implements Comparator<Opera>{

    public int compare(Opera left,Opera right){     
        return left.getArtist().compareTo(right.getArtist());
    }
} 
我收到这个错误:

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

为什么?

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

Collections.sort(ordbyauthor, new OpereComparatorAuthor());
更新:

这只是一个建议。对于这种情况,使用匿名类(我认为这是一个很好的候选者),而不是定义类

e、 g

//根据您的评论,我在这里使用的是Sala而不是Opera
Collections.sort(ordbyauthor,newcomparator(){
@凌驾
公共整数比较(左萨拉,右萨拉){
//请根据您的要求在这里进行比较
//然后返回结果
}
});

创建对象后,我收到错误:找不到符号符号:方法排序(java.util.LinkedList,OpereComparatorAuthor)位置:class java.util.Collections Collections.sort(ordbyauthor,new OpereComparatorAuthor());您如何声明
ordbyauthor
?该比较器不适用于
Sala
,而是适用于
Opera
,正如您使用
实现比较器一样。您正在为
Opera
传递
Sala
s和
Comparator
列表。对于
Sala
Opera
而言,列表和比较器应为同一类型。您的比较器是比较器。它比较了歌剧实例。您正在尝试使用它对列表进行排序。使用比较器来比较Sala实例。您在评论中提到了Salla。歌剧和莎拉之间的关系是什么?另外,发布更多关于如何调用sort的代码,包括列表的定义
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
    }
});