如果说数组是一条修好公路,那么队列就是一条只有起点没有终点的路,它依据人们的实际情况不断的重修,直到修到人们所要达到的低分,虽然这个例子不够现实,但是这确实是数组和队列的很好解释。队列的使用,一般能够排除一些空指针异常等现象,所以优先于数组使用队列是一种不错的选择。
首先我们得定义一个类,定义该类的属性。
/**
* 定义一个学生类。包含学生的姓名和年龄
* @author 周建权
*
*/
public class Student {
private String name;
private int age;
Student(String name,int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void study(){
System.out.println("学生在学习!");
}
}
其次,我们需要定义一个队对列类,这是用于实现对学生类的一些操作。
/**
* 定义一个队列类
* @author acer
*
*/
public class Queue {
//新建一个学生数组
private Student [] stu=new Student[0];
/**
* 定义一个函数,用于实现往队列中加入元素
* @param st返回值是学生类型
*/
public void add(Student st){
//新建一个数组
Student [] stud=new Student[stu.length+1];
//复制数组的内容
for(int i=0;i<stu.length;i++){
stud[i]=stu[i];
}
//把要加入的元素复制都数组的最后一个元素
stud[stu.length]=st;
//再继续此过程
stu=stud;
}
/**
* 用于获取队列的当前大小
* @return 返回队列的当前长度
*/
public int size(){
return stu.length;
}
/**
* 定义一个函数,用于获取队列里的某一位置的值
* @param index
* @return 返回某一位置的值
*/
public Student get(int index){
Student st=stu[index-1];
return st;
}
/**
* 定义一个插入的方法,该方法用于往队列中插入新的值
* @param st插入的数据
* @param index插入的位置
*/
public void insert(Student st,int index){
//新建一个数组
Student [] stud=new Student[stu.length+1];
//把数组index前面的值复制到队列中
for(int i=0;i<index-1;i++){
stud[i]=stu[i];
}
//把索引位置插入的值赋值过去
stud[index-1]=st;
// 把数组后面的值复制到队列中
for(int i=index;i<stu.length;i++){
stud[i]=stu[i-1];
stu=stud;
}
}
/**
* 定义一个删除函数,用于删除队列中某一位置的值
* @param index删除的位置
*/
public void delete(int index){
//新建一个数组
Student [] stud=new Student[stu.length-1];
//把数组index前面的值复制到队列中
for(int i=0;i<index-1;i++){
stud[i]=stu[i];
}
// 把数组后面的值复制到队列中
for(int i=index;i<stu.length;i++){
stud[i-1]=stu[i];
}
}
}
接下来,就是队列的实现啦,
/**
* 类的作用是实现queue类中的一些功能,用于测试类Queue的一些功能
* @author 周建权 2013.7.16
*
*/
public class QueueTest {
/**定义一个主函数,该函数用于实现队列的增删查找等功能
*/
public static void main(String[] args) {
//实例化一个Queue对象
Queue que=new Queue();
//给队列初始化几个值
for(int i=0;i<5;i++){
Student st=new Student("学生"+i,10+i);
que.add(st);
}
que.delete(3);
Student st=new Student(" 小明",3);
que.insert(st,2);
for(int i=1;i<que.size();i++){
System.out.println("姓名是"+que.get(i).getName()+"年龄是"+que.get(i).getAge());
que.get(i).study();
}
}
至此,一个简单的队列实现了。队列的思想其实比较简单,就是实现一个类中元素的增删添加之类的。看似很难但是如果认真的写一下,其实不是那么难的。真好。