首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中使用compareTo进行排序

在Java中使用compareTo进行排序
EN

Stack Overflow用户
提问于 2014-04-17 03:03:49
回答 3查看 303关注 0票数 1

基本上,我尝试编写一个基于compareByWord的值进行比较的compareTo。如果compareByWord为真,我希望它基于单词进行比较,但如果它为假,我希望它基于count进行比较。

代码语言:javascript
复制
class WordCount implements Comparable //Error saying WordCount must implement the inherited abstract method Comparable.compareto (Object)
{
String word;
int count;
static boolean compareByWord;
public WordCount(String aWord)
{
    setWord(aWord);
    count = 1;
}
private void setWord(String theWord)
{
    word=theWord;
}
public void increment()
{
    count+=1;
}
public static void sortByWord()
{
    compareByWord = true;
}
public static void sortByCount()
{
    compareByWord = false;
}
public String toString()
{
    String result = String.format("%s (%d)",word, count);
    return result;
}
public String getWord()
{
    return word;
}
public int getCount()
{
    return count;
}
@Override
public int compareTo(WordCount other) {  //Error saying compareTo (WordCount) of type WordCount must override or implement a supertype method.
    if (compareByWord == true)
    {
        return word.compareTo(other.getWord());
    }
    if (compareByWord == false)
    {
        return count.compareTo(other.getCount()); //Error saying it cannot invoke compareTo int on primitive type int.
    }
    return 0;
}
}

在我尝试实现它之前,我的类是完美的,不知道我在哪里出错了。任何帮助都是非常感谢的。

EN

回答 3

Stack Overflow用户

发布于 2014-04-17 03:05:22

将声明更改为

代码语言:javascript
复制
class WordCount implements Comparable<WordCount> { // generic version

Comparable<WordCount>中的方法签名是compareTo(WordCount obj),而原始版本中的方法签名是compareTo(Object obj)

通过使用@Override,编译器确保您实际上重写了父方法。问题是compareTo(WordCount obj)不会覆盖compareTo(Object obj)

票数 0
EN

Stack Overflow用户

发布于 2014-04-17 03:06:11

使用Integer count而不是int count。Integer是实现可比较的对象,而int是错误消息所描述的原语。对于javadoc:

代码语言:javascript
复制
public final class Integer
extends Number
implements Comparable<Integer>

当然,也要确保将访问器方法更改为使用Integer。

这将解决您的最后一个错误。

票数 0
EN

Stack Overflow用户

发布于 2014-04-17 03:08:43

代码语言:javascript
复制
must implement the inherited abstract method Comparable.compareto (Object)

所以传递Object,而不是WordCount。现在,您正在尝试重载此函数,而不是重载。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23118013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档