java自定义队列

//泛型其实就可以理解为一个模板,至于我们制作模具是倒进去的是什么有我们自己决定。



public class MyList <E> {
                         //这是一个标志

创建一个Object数组
private Object[] array = new Object[0];

//队列的增加操作
public void add(E e){
//创建一个新Object数组用做交换的模具
Object[]  new_array = new Object[array.length+1];

//将原数组中的元素拷贝过来
for (int i=0;i<array.length;i++){
new_array[i] = array[i];
}
//将新元素添加到队列的最末尾
new_array[new_array.length-1] = e;
//指针重新指向
array = new_array;


}

//获得队列的长度
public int getlength(){
return array.length;
}

//队列的修改
public void modify(int index,E e){
array[index] = e;
}

//队列的查找
public E get(int index){
//注意要进行强制类型转换
return (E)(array[index]);
}



//删除操作                          
// 要重点考虑数组存放数据的连续性

public void delete(int index){
Object[] new_array = new Object[array.length-1];

//将修改值之前的类容复制过去
for (int i=0;i<index;i++){
new_array[i] = array[i];
}
//将删除的元素值之后的部分拷贝过去
for (int i=index+1;i<array.length;i++){
new_array[i-1] = array[i];
}

//重新指向
array = new_array;
}

//插入新元素
public void insert(int index,E e){
//新建一个交换数组
Object[] new_array = new Object[array.length+1];

//将插入之前的部分拷贝到元素的数组当中
for (int i=0;i<index;i++){
new_array[i] = array[i];
}
//插入新的元素
new_array[index] = e;
//将老数组后面的元素拷过去
for (int i=index;i<array.length;i++){
new_array[i+1] = array[i];
}
array = new_array;
}
//查询数组当中已经存放的元素个数
public int real_length(){
int location = 0 ;
for (int i=0;i<array.length;i++){
if (array[i] == null){
location = i;
break;
}
}
return location;
}


}

猜你喜欢

转载自wang-jianxin.iteye.com/blog/1581150
今日推荐