自定义队列总结

在java语言中,为了弥补数组定义时必须声明数组大小的缺点,就出现了队列,很好的解决了这一问题。其实从本质上来说,队列是数组的改良版,通过对数组的操作,从而达到可以改变队列的大小。代码如下:

private Object[] SrcA=new Object[0];//数组属性,长度初始化为0
//添加对象
public void add(E e) {
// 创建一个数组,长度是原数组长度+1
Object []destA=new Object[SrcA.length+1];
//将要加入的对象放到新数组的最后
destA[SrcA.length]=e;
//将原数组元素放到新数组中
for(int i=0;i<SrcA.length;i++){
destA[i]=SrcA[i];
}
//原数组指向新数组
SrcA=destA;//即将原数组改为新数组。方便用于新数组放新对象
}
因为每次加入新元素时,都是将新数组的大小加一,之后原数组再指向新数组,这样就能不断的往里面加新元素了。
泛型:在上面代码中可以看出,引用了Object类和E,E是泛指的类型,因为在我们创建队列时,如果指定了它的类型,而当你想用它来创建与之类似的类时,你必须得把原来写的代码复制,并且要修改很多地方,这样极大的破坏了队列的重用性。因此就引用了E泛型,E可以代表各种类,这样当你需要什么类的时候,你就可以直接在调用队列的时候,就E类型指定为你所需要的类型就可以了。代码如下:
//创建队列对象
//当你需要String类型时,你就这样指定
NetJavaList<String> list=new Stlist();
一个队列一般都有它的增删改查的操作,因此附代码如下:
//得到指定索引的学生对象
public E get(int index) {
E st=(E)SrcA[index];//强制转型
return st;
}
//得到队列的长度。即队列中元素的个数
public int size() {
return SrcA.length;
}
//把第几个元素删除,删除指定位置的元素
public void delete(int index){
//声明一个数组大小比原数组小一
index=index-1;//将索引减一,实现索引与元素对应
Object []destA=new Object[SrcA.length-1];
//将原数组指定索引前的数复制给destA
for(int i=0;i<index;i++){
destA[i]=SrcA[i];//赋值
}
//将原数组指定索引后的数复制给destA
for(int i=index;i<destA.length;i++){
destA[i]=SrcA[i+1];
}
//将原数组指向新数组
SrcA=destA;
}
//把第几个元素改变,改变指定位置的元素,st为改变的新元素
public void change(int index,E e){
SrcA[index-1]=e;
}
//在指定位置插入指定元素
public void ChaRu(int index,E e){
//index代表插入的位置
//声明一个数组大小比原数组多1的数组
Object []destA=new Object[SrcA.length+1];
//将指定索引数之前(包括本身)的元素复制给新数组
for(int i=0;i<index+1;i++){
if(i<index)
destA[i]=SrcA[i];
else
destA[i]=e;
}
//再将指定索引后的元素复制给新数组
for(int i=index+1;i<destA.length;i++){
destA[i]=SrcA[i-1];
}
//将原数组指向新数组
SrcA=destA;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值