队列总结

1.为什么要用到队列
我们都学过数组,知道数组在定义时必须明确他的长度。顺便复习下数组的定义的一些规则;
数组要如下定义
如:数据类型 [] 数组名=new 数据类型[数组长度(必须有)];
数据类型 [] 数组名={值...};
数据类型 [] 数组名=new 数据类型[]{值...};

//先声明数组
数据类型 [] 数组名;
数组名=new 数据类型[数组长度];或者 数组名=new 数据类型[]{值..}
以下这种情况是不允许的
数据类型 [] 数组名;
数组名={值..}
这种情况在声明数组的时候并没有给他分配内存空间,也就不能给他赋值。
类似的二维数组也和一维数组的定义方法是一样的,只是把[]改成[][].

可以看出来,定义一个数组后,内存分配给他的空间就固定了。但是我们要用数组来存储东西时,有时候并不知道要存储多少个元素,所以在定义数组时我们不知道要给他定义多大的长度(分配多少空间给他)。或许有的同学会这样想,既然要用来存储东西,我们就给数组一个非常大的空间,让他足够来存储就行了,可想而知,这种做法是非常浪费内存空间的。所以就出现了队列来解决这个问题。

2.什么是队列
队列是一个我们自己创建的类,(和一般我们定义的类相同,只是方法和属性上的区别)
既然队列是用来解决数组存储元素中无法解决的一些问题,所以可以这样来理解队列:队列其实也是一个“数组”,但他的功能比数组强,他没有明确、固定的长度,可以任意添加、删除、移动..队列中的元素(视具体队列中的方法而定)。

3队列的定义
既然队列是一个类,所以队列的定义和一般类的定义是完全相同的。
如:public class 队列类名{}

4队列中属性和方法的定义
由于队列和一般的类是有区别的,他和数组一样可以看成是一个容器,是要用来存储元素的
所以类中我们给必须他声明一个数组属性,其还要实现一些数组无法实现的功能,所以还要一些具体的方法,请看如下一个队列的代码


/ * 创建一个队列类
* l
*
*/
public class DuiLie {
//声明一个数组对象,数据类型用Object,因为Object为所有类的父类这样队列可以存储不同类型对象的元素,给数组的长度定为一,
Object [] array=new Object [0];
//定义一个往队列末尾添加一个元素的方法
public void add(Object o){
//创建一大新数组,长度比原来数组大一
Object [] array2=new Object[array.length+1];
//把原来数组里的元素复制到新数组中
for(int i=0;i<array.length;i++){
array2[i]=array[i];
}
//把元素o添加到新数组末尾
array2[array.length]=o;
//将两个数组交换,这步很重要,把原来的数组指向新的数组,就的数组空间被释放,可 以理解为新的数组取代了旧的数组的位置。
array=array2;

}
//定义一个获取队列中任一元素的方法,参数index即获取元素的索引
public Object get(int index){
return array[index];
}

//定义一个获取队列长度的方法
public int size(){
return array.length;
}
}


以上是一个简单的队列定义,估计只要大体看下都能看懂,而队列其他的一些功能,比如说从队列中删除任一元素,往队列中任意位置添加一个元素,或者把一个队列或一个数组中的元素全部添加到队列中,这些都是可以实现的,只要你想得到的对元素存储删除的操作大体都能实现,关键看你怎么去写对应的方法了。


接下来让我们来检测一下这个对列
创建一个队列测试类

public class DuiLieTest {

/**队列测试类
*
*/
public static void main(String[] args) {
//创建一个队列对象
DuiLie dl=new DuiLie();
//向队列中添加三个元素
dl.add("abc");
dl.add("efg");
dl.add("opq");

//把队列中的元素输出来
for(int i=0;i<dl.size();i++){
//获取队列中的元素,该元素为Object类型的
Object o=dl.get(i);
//得将该元素转化成字符串类型
String s=(String)o;
//输出字符串
System.out.println("第"+(i+1)+"个元素是:"+s);
}
//输出队列长度
System.out.println("队列长度是:"+dl.size());
}

}


执行上面的代码便可看到命令行的相应输出:
第1个元素是:abc
第2个元素是:efg
第3个元素是:opq
队列的长度是:3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值