0

这是我正在使用的比较器:

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) 错误。为什么它给我这个错误?...

4

2 回答 2

6

您在 Comparator 声明中遗漏了泛型参数。

public class StringComparator implements Comparator<String>
//                                                     ^
//                you need this!                       |
// ----------------------------------------------------
于 2013-03-11T21:59:31.987 回答
3

因为比较器是一个通用接口,并且由于您没有将它定义为 aComparator<String>它依赖于最通用的定义,Comparator<Object>这意味着参数应该是Objects而不是Strings

将其更改为

public class StringComparator implements Comparator<String> {

它应该编译得很好。

于 2013-03-11T22:01:52.967 回答