java - 使用需要对象作为参数的compareTo 来比较字符串

标签 java string comparable compareto

我创建了一个扩展 ArrayList 的类,名为sortedWordList,用于保存字符串并对其进行排序。我想实现二分搜索来覆盖 indexOf 方法。

我无法使用compareTo 来比较我的字符串。我知道我正在将类型 Object 传递给compareTo,但我相信这必须是我的参数类型才能覆盖 ArrayList 的 indexOf 方法。

我的二分搜索算法可能不正确,因为我还没有机会调试它,所以你可以忽略它。

@Override
public int indexOf(Object o) {

    int min = 0;
    int max = len - 1;
    while (true){
        int mid = (int)((min + max)/ 2);
        if (this.get(mid).compareTo(o) == 0){
            return(mid);
        }
        if (this.get(mid).compareTo(o) < 0){
            min = mid;
        }
        else if (this.get(mid).compareTo(o) > 0){
            max = mid;
        }


        if (max == mid) break;

    }

    return -1;
}

最佳答案

如果您的 this.get(i) 返回一个 String,您可能希望使您的方法签名为

public int indexOf(String o)

并且,您可能不想扩展 ArrayList,而是 encapsulate it .

编辑:

如果您被迫坚持使用该方法签名,请使用 String.valueOf(o)Object 转换为 String

关于java - 使用需要对象作为参数的compareTo 来比较字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43127533/

相关文章:

sql server 将字符串转换为日期时间

java - 如何创建分数列表?

java - 比较不同类型的对象列表的有效方法

C+ 的 Java 等效项 +'s “std::string::find_first_not_of”

c - linux下C如何区分字符串中的数据类型?

r - 在字符串中的特定位置插入空格

java - 来自嵌套 POJO 的比较器

java - SwingWorker,取消按钮不起作用

java - 在java中使用对象作为互斥体

java - 形状无法缩放