Java 如何在树集合中使用自定义比较器?
我想对Java 如何在树集合中使用自定义比较器?,java,guava,comparator,Java,Guava,Comparator,我想对TreeMultiSet使用自定义比较器。我是这样做的: public static class OccurenceComparator implements Comparator<Multiset.Entry<String>>{ @Override public int compare(Multiset.Entry<String> e1, Multiset.Entry<String> e2) { return
TreeMultiSet
使用自定义比较器。我是这样做的:
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);
}
公共静态类OccurenceComparator实现Comparator{
@凌驾
公共整数比较(多集项e1、多集项e2){
返回e2.getCount()-e1.getCount();
}
}
公共静态void main(字符串args[])引发异常{
Comparator OccurrenceComparator=新的OccurrenceComparator();
Multiset treeMultiSet=treeMultiSet.create(OccurrenceComparator);
}
以下是我得到的:
未解决的编译问题:
方法create(Comparator您的多集是Multiset
,因此您的比较器不应该比较字符串吗?这看起来是编译器所期望的
public static class OccurenceComparator implements Comparator<String>{
公共静态类OccurenceComparator实现Comparator{
您的多集是Multiset
,因此您的比较器不应该比较字符串吗?这似乎是编译器所期望的
public static class OccurenceComparator implements Comparator<String>{
公共静态类OccurenceComparator实现Comparator{
comparator比较键而不是条目。在您的实例中应为comparator类型,但我想根据它们在多集中出现的次数进行比较。comparator比较键而不是条目。在您的实例中应为comparator类型,但我想根据它们在多集中出现的次数进行比较但是我没有字符串,我该怎么办?…你不应该使用一个按元素排序的TreeMultiset
。你应该使用类似的东西。我应该使用什么?我以为那是番石榴的排序多集。嗯,好吧,我会寻找那个方法。看来我没有足够好的番石榴版本。记住这个函数可能也用于插入s排序。但我没有字符串。getCount(),我该怎么办?…你不应该使用一个按元素排序的TreeMultiset
。你应该使用类似的东西。我应该使用什么?我以为那是番石榴的排序多集。嗯,好吧,我会寻找那个方法。看来我没有足够好的番石榴版本。记住这个函数可能也用于插入s型。