比较字符串与compareTo需要Object作为参数

时间:2017-03-30 20:15:25

标签: 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;
}

1 个答案:

答案 0 :(得分:1)

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

public int indexOf(String o)

而不是扩展ArrayList,您可能需要encapsulate it

修改

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