我正在实现一种左派最小堆的形式,该形式按长度存储任意单词。因此,我为Scanner编写了一个包装器类,并更改了compareTo,如下所示

public class ScannerWrapper implements Comparable<String>

//a Scanner, sc and a String, current
public int compareTo(String str){
    if(current.length() > str.length()) return -1;
    if(current.length() > str.length()) return 1;
    else return 0;
}


其中current = sc.next()而不是\ n字符。

在这种情况下,如果我有ScannerWrapper.next()> foo,其中foo是任意长度的字符串> ScannerWrapper.next();
它会使用我编写的compareTo(String)并返回false,还是会执行其他随机操作?

最佳答案

几次阅读您的问题后,我想我明白您现在在问什么。如果您尝试使用比较运算符比较类ScannerWrapper的两个实例,则不会,它将无法正常工作。

您不能在Java中重载运算符(您可以在C ++中重载),因此,要相互比较ScannerWrapper的实例,必须调用compareTo()方法。

而且,您的两个if语句条件都相同,因此您可能需要解决此问题。

10-02 07:48