上面一篇文章对我们的数组类进行add方法的操作,现在我们看看其删除,修改,查询的操作
1.查询
/**
* 获取index的元素
* @param index 索引
* @return
*/
public int get(int index){
if(index < 0 || index >= size){
throw new IllegalArgumentException("error index");
}
//data进行隐藏,用户只能用data[index]的值而获取不到这个数组data
//好处,对用户传来的index进行判断
return data[index];
}
只要返回对应的index值即可,因此查询效率特别快
2.修改
/**
* 修改index处元素
* @param index 索引
* @param e 元素
*/
public void set(int index, int e){
if(index < 0 || index >= size){
throw new IllegalArgumentException("error index");
}
data[index] = e;
}
只要对应index赋值即可完成修改,因此修改的效率特别快
删除数组的元素
/**
* 移除指定index的元素
* @param index
* @return
*/
public int remove(int index){
if(index < 0 || index >= size){
throw new IllegalArgumentException("error index");
}
int ret = data[index];
for (int i = index + 1; i <size ; i++){
data[i - 1] = data[i];
}
size --;
return ret;
}
4.数组动态扩容
/**
* 数组扩容
* @param newCapacity 扩容的容量
*/
private void resize(int newCapacity){
E[] newData = (E[])new Object[newCapacity];
//遍历原来数组 将值赋值给新数组
for(int i = 0 ; i < size; i++){
newData[i] = data[i];
}
//将新数组赋值给data
data = newData;
}