0
我正在嘗試使用二進制搜索方法編寫已排序字典的刪除方法。我的字典是一個位置列表,基於排序的字典。搜索方法如下:刪除方法排序字典java
private Entry<Integer, V> binarySearch(int key, int low, int high) {
int mid = (high + low)/2;
if(low > high){
return null;
}
else if(sortedList.get(mid).getKey() == key){
return sortedList.get(mid);
}
else if(sortedList.get(mid).getKey() > key){
return binarySearch(key, low, mid-1);
}
else{
return binarySearch(key, mid+1, high);
}
}
到目前爲止我的代碼是:
@Override
public Entry<Integer, V> remove(Entry<Integer, V> e)
throws InvalidEntryException {
if(e == null){
throw new InvalidEntryException("");
}
Entry<Integer, V> entry = binarySearch(e.getKey(), 0, size());
if(entry != e){
boolean found = false;
int i = getLocation(entry.getKey());
while(!found && i < size()-1){
entry = binarySearch(e.getKey(), i+1, size());
if(entry == e){
found = true;
sortedList.remove(i);
}
i++;
}
}
else{
sortedList.remove(getLocation(entry.getKey()));
}
if(entry == null){
throw new InvalidEntryException("");
}
else{
return entry;
}
}
任何人都可以對任何輸入的所有幫助?我真的不知道如何去做這件事,我已經無法沮喪了。我基本上需要刪除,如果條目是參數相同的實例。與字典一樣,可能有多個條目具有相同的鍵,但只有在條目與參數是同一實例時才需要刪除。
謝謝你的幫助。
不,我明白。我不想重寫equals方法。我被指示使用==運算符而不是更改equals() – ola 2013-02-11 16:42:21