/**
* 定义一个接口类(定义数组的增加,删除,按下标查询,返回队列长度)的方法
*/
package 队列增删改查;
public interface IFunction {
//向队列中加入一个元素
public void add(String s) ;
//删除数组中指定下标的元素
public void delete(int index);
//将元素插入到指定的位置
public void insert(String s,int index);
//获取队列中指定的下标的元素
public String get(int index);
//得到队列的长度
public int size();
}
/*
* 实现接口中的方法
*/
package 队列增删改查;
public class FunctionTest implements IFunction {
String[] s1 = new String[0]; //首先定义一个元素个数为0的数组
//向队列末尾加入一个元素方法的实现:
//先将原来的数组复制到新的数组中去,在将加进来的元素补到新的数组的末尾
public void add(String i2) {
String[] s2 = new String[s1.length+1]; //首先定义一个比原来的数组大一的新的数组
for(int i = 0; i < s1.length; i++) { //利用循环将旧的数组复制到新的数组中
s2[i] = s1[i];
}
s2[s1.length] = i2; //将加进来的新的元素补到新数组的末尾
s1 = s2; //将原来的数组指向新的数组,以下方法出现均同理
}
//删除数组中指定下标的元素
public void delete(int index) {
String[] s2 = new String[s1.length-1]; //先定义一个比原来数组小1的数组
for(int i = 0; i < s1.length-1; i++) { //利用循环和判断语句分别将旧数组的元素复制到新的数组中
if(i < index) {
s2[i] = s1[i]; //当i < index 时直接复制
}
else s2[i] = s1[i+1]; //当i >= index时,将旧的数组的下一个下标的元素复制到新的数
} //当前的下标下
s1 = s2;
}
//将元素插入到指定的位置
public void insert(String s, int index) {
String[] s2 = new String[s1.length+1];
for(int i = 0; i < s1.length; i++) {
if(i < index) { //利用循环并判断,
// 当i<index时直接复制到新的数组中去
s2[i] = s1[i];
}
else if(i == index) { //当i = index 时 将要插入的元素插入到新数组的当前下标下
s2[i] = s;
}
else
for(int j = index; j < s1.length; j++) { //当i > index 时 利用循环将旧的数组从下标等于index的元素起
s2[j+1] = s1[j]; //依次复制到新的数组的比其大1的下标下
}
}
s1 = s2;
}
//获取队列中指定的下标的元素
public String get(int index) {
return s1[index]; //返回指定下标的元素
}
//得到队列的长度
public int size() {
return s1.length; //调用length方法返回队列的长度
}
}
/**
* 程序入口类
*/
package 队列增删改查;
public class Main {
public static void main(String[] args) {
FunctionTest fun = new FunctionTest();
//向队列中加入十个元素
for(int i = 0; i < 10; i++) {
String s = i+"";
fun.add(s);
}
//打印出每个元素
System.out.println("加入十个元素后队列的元素如下:");
for(int i = 0; i < fun.size() ; i++) {
System.out.print(" "+fun.get(i)); //调用get()方法打印出每个元素
}
System.out.println();
//返回队列的长度
System.out.println("队列的长度为"+fun.size()); //调用size()方法打印出队列的长度
//删除指定下标的元素
fun.delete(3);
//打印出删掉后队列的各个元素
System.out.println("删除指定元素后队列的元素如下(删除下标为3的元素):");
for(int i = 0; i < fun.size(); i++) {
System.out.print(" "+fun.get(i));
}
System.out.println();
//返回队列删除元素后队列的长度
System.out.println("删除后队列的长度为"+fun.size());
//向指定的位置插入元素
System.out.println("向指定下标(4)插入指定元素(100)后队列变为:");
fun.insert("100", 4);
for(int i = 0; i < fun.size() ; i++) {
System.out.print(" "+fun.get(i));
}
System.out.println();
System.out.println("插入后元素的个数变为"+fun.size());
}
}
输出结果:
加入十个元素后队列的元素如下:
0 1 2 3 4 5 6 7 8 9
队列的长度为10
删除指定元素后队列的元素如下(删除下标为3的元素):
0 1 2 4 5 6 7 8 9
删除后队列的长度为9
向指定下标(4)插入指定元素(100)后队列变为:
0 1 2 4 100 5 6 7 8 9
插入后元素的个数变为10