目前停留在二元搜索的问题上,要求我传递一个参数是一个对象。 但这可能吗?通常我会使用两个参数来解决这个问题。 通常使用二进制搜索我使用 - >
int binarySearch(int[] list, int searchItem)
{
int mid=0;
int start=0;
int end=list.length-1;
boolean found=false;
//Loop until found or end of list.
while (start <= end && !found)
{
mid = (start + end) / 2;
if (list[mid] == searchItem)
found = true;
else
if (list[mid] > searchItem)
end = mid - 1;
else
start = mid + 1;
}
if(found)
return mid;
else
return(-1);
}
但是可以像这样输入一个参数吗?我需要搜索一个数组列表。
public int binarySearch(Moon searchItem){
int mid = 0;
int start = 0;
int end = moons.size() -1;
boolean found = false;
while(start <= end && !found){
mid = (start + end) / 2;
if(moons.get(mid).equals(searchItem)){
found = true;
}
else{
if(???)) {
}
else
etc etc
}
}
return 0;
}
答案 0 :(得分:0)
首先,你应该回答这个问题:How to compare objects by multiple fields
然后,实施Comparable
到Moon
课程。如果你不能改变Moon课程,那么你要创建Comparator
。
您需要覆盖Moon类中的compareTo
方法,该方法可用于代替问题中的???
。