最常见的数据存储结构就是数组,数组查找方便,但删除,插入麻烦,而且大小固定不变。有时所需数组的长度会改变,那么这时就要用到数组队列。
数组队列的实质还是数组,只不过将数组的动态增删封装在一个类中,增删的实质还是两个数组之间的复制。
下面代码实现了数组队列的增,删,改,查。
package array;
public class test1 {
private Object[] array;
private int length;
public int size(){
return length;
}
//产生一个数组
public void create(){
array=new Object[10];
for(int i=0;i<10;i++){
array[i]=i;
length++;
}
}
//向数组中添加元素
public void add(Object data){
Object []array1=new Object[length+1];
for(int i=0;i<length;i++){
array1[i]=array[i];
}
array1[length]=data;
array=array1;
length++;
}
//向数组中插入元素
public void insert(int index ,Object data){
if(index>=0&&index<length){
Object []array1=new Object[length+1];
for(int i=0;i<index;i++){
array1[i]=array[i];
}
array1[index]=data;
for(int j=index+1;j<length;j++)
{
array1[j]=array[j-1];
}
array=array1;
}
else
{
System.out.println(" error");
}
}
//按照元素删除元素
public void delData(Object data){
Object []array1=new Object[length-1];
int k=0;
for(int i=0;i<length;i++){
if(array[i]==data){
}
else
{
array1[k]=array[i];
k++;
}
}
length--;
array=array1;
}
//按照位置删除元素
public void delIndex(int index){
if(index>=0&&index<length)
{
Object []array1=new Object[length-1];
for(int i=0;i<index;i++)
{
array1[i]=array[i];
}
for(int j=index+1;j<length;j++)
{
array1[j-1]=array[j];
}
length--;
array=array1;
}
else
{
System.out.println("error");
}
}
//遍历数组
public void travel(){
for(int i=0;i<length;i++){
System.out.println(array[i]);
}
}
public static void main(String[] args) {
test1 test=new test1();
test.create();
test.delData(3);
test.insert(0, 100);
test.delIndex(8);
test.travel();
}
}