如何在 TreeMultiSet 中使用自定义比较器?

dra*_*nxo 1 java comparator guava

我想用一个自定义ComparatorTreeMultiSet。这是我所做的:

public static class OccurenceComparator implements Comparator<Multiset.Entry<String>>{
    @Override
    public int compare(Multiset.Entry<String> e1, Multiset.Entry<String> e2) {
        return e2.getCount() - e1.getCount() ;
    }
}

public static void main(String args[]) throws Exception{
    Comparator<Multiset.Entry<String>> occurenceComparator = new OccurenceComparator();
    Multiset<String> treeMultiSet = TreeMultiset.create(occurenceComparator);
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的:

未解决的编译问题:create(Comparator<? super E>)类型中的方法TreeMultiset不适用于参数 (Comparator<Multiset.Entry<String>>)

我难住了

Kar*_*k T 5

您的 Multiset 是Multiset<String>,那么您的比较器不应该比较Strings 吗?这看起来是编译器所期望的。

public static class OccurenceComparator implements Comparator<String>{
Run Code Online (Sandbox Code Playgroud)