这是我正在使用的比较器:
import java.util.Comparator;
public class StringComparator implements Comparator
{
public int compare(String obj1, String obj2)
{
String delimeter = " ";
String nameSplit1[] = obj1.split( delimeter );
String nameSplit2[] = obj2.split( delimeter );
return nameSplit1[1].compareTo(nameSplit2[1]);
}
}
这是主要文件:
import java.util.*;
public class StringCompare
{
public static void main( String args[] )
{
List<String> stringList = new ArrayList<String>();
String delimeter = " ";
stringList.add( "Seven Clocks" );
stringList.add( "Twelve Beds" );
stringList.add( "Eight Frogs" );
Collections.sort( stringList, new StringComparator() );
for ( String a : stringList )
{
System.out.println( a );
}
}
}
我基本上是在尝试制作一个比较器,所以collections.sort根据第二个单词排序,而不是第一个单词。但是当我编译它时,我得到的只是StringComparator不会覆盖抽象方法compare(Object,Object)错误。为什么它会给我这个错误?...
答案 0 :(得分:6)
您遗漏了比较器声明中的泛型参数。
public class StringComparator implements Comparator<String>
// ^
// you need this! |
// ----------------------------------------------------
答案 1 :(得分:3)
因为比较器是一个通用接口,并且因为你没有将它定义为Comparator<String>
,所以它会回到最常见的定义Comparator<Object>
,这意味着参数应该是{{1}而不是Objects
。
将其更改为
Strings
它应该编译得很好。