谢谢!那位能给个答案?
1. 分析下面的程序 :
public class Thing {
int capacity;
int growspeed;
public int size;
public String []keys;
public Object []values;
public Thing(int initialcapacity) {
capactity= initialcapacity ;
keys=new String [capacity];
values=new Object [capacity];
}
public void clear(){
for(int i=0;i<size;i++) {
keys[i]=null;
values[i]=null;
}
size=0;
}
public void put(String key,Object value) {
int idx=get(key);
if(idx>=0){
keys[idx]=key;
values[idx]=value;
return ;
}
if(size>capacity) grow(1);
size++;
idx=-1-idx;
for(int i=size-1;i>idx;i--){
keys[i]=keys[i-1];
values[i]=values[i-1];
}
keys[idx]=key;
values[idx]=values;
}
Void grow(int amount){
}
public void get(String key) {
int low=0;
int high=size-1;
int cmp=0;
while(low<=high){
int mid=(low+high)/2;
cmp=keys[mid].compareTo(key);if(cmp>0){
high=mid-1;
} else if(cmp<0){
Low=mid-1;
} else {
return mid;
}
}
return -1-mid;
}
}
问题:
a) 请用准确,有意思的名词替换类名 Thing
b) 请找出并修正 void put(String key,Object value)方法中的一个缺陷
c) 请给出 int get(String key)这个方法里用到的算法
d) 请补充完整 void grow(int amount)这个方法