我创建了一个扩展 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/