自定义队列
学过编程语言的同学都知道,我们可以用数组来储存数据,可是数组有一个非常大的弊端就是一旦定义后就无法改变其长度,可是在很多情况下我们是无法预计我们所要存的数据有多少的,比如:我需要存储多个的学生信息,但是先却不知道学生的个数,此事,定义一个自定义队列,就可以很快解决,下面我给大家做个示范,如何定义自定义列表:
我们所定义的学生类:
//这个类只用于测试:
文件名:Student
此文件定义了Student类,为了节约时间,只定义了两个属性,名字和年龄,下面我们将这给类所生成的对象存入我们的自定义队列中:
package Aprogram;
publicclass Student {
private String name;
privateintold;
Student(){
}
Student(String name,int old){
this.name = name;
this.old = old;
}
publicvoid showEverything(){
System.out.println("姓名:"+name+" 年龄:"+old);
}
}
文件名:Myfirstlist(接口)
定义接口很大的好处是规范,明确类需要拥有什么样的方法
package Aprogram;
publicinterface Myfirstlist<E> {
void add(E e);
void delet();
void delet(int index);
E get(int index);
int getLength();
void insert(E e,int index);
void addAll(Myfirstlist<E> list);
}
文件名:MyFirst
下面我将主要介绍自定义队列的增加元素,减少元素和get队列中的某个元素的方法
package Aprogram;
publicclass MyFirst<E> implements Myfirstlist<E>{
//继承接口
private Object[] srcA = new Object[0];//首先创建一个只有一个元素的数组,做为属性
//@Override
public MyFirst(){
}
//声明原始长度
public MyFirst(int OrignalLength){
Object[] srcA = new Object[OrignalLength];
this.srcA = srcA;
}//构造方法
//声明原始长度,增长率:(未完成)
public MyFirst(int OrignalLength,int increaseCount){
}
//添加一个元素
publicvoid add(E e) {
// TODO Auto-generated method stub
//如果初始数组没满
if(srcA[srcA.length-1]==null){
for(int i = 0; i<srcA.length;i++){
if(srcA[i]==null){
srcA[i]=e;break;
}
}
}
//如果已经满了
else{
//新建一个新的Student数组
Object[] text = new Object[srcA.length+1];
//把元素放在新数组最后
text[text.length-1] = e;
//将原数组的元素一一放入,新数组
for(int i = 0;i<srcA.length;i++){
text[i] = srcA[i];
}
srcA = text;
}//
}
@Overridepublicvoid delet() {
// TODO Auto-generated method stub
//(未完成)
}
@Override
//删除指定位置的元素
publicvoid delet(int index) {
// TODO Auto-generated method stub
Object[] text = new Object[srcA.length-1];
//申请一个少一个元素的数组
for(int i = 0;i<index;i++){
text[i] = srcA[i];
}//在删除点之前的元素照常添加
for(int i = index+1; i<srcA.length;i++){
text[i-1] = srcA[i];//把位置空出来,继续添加
}
srcA = text;//用新数组代替原数组
}
@Override
publicint getLength() {
// TODO Auto-generated method stub
returnsrcA.length;//(此方法不完整,没有考虑到初始长度,读者可以自己修改)
}//获取长度
@Override
public E get(int index) {
E st = (E)srcA[index];
return st;
}
@Override
publicvoid addAll(Myfirstlist<E> list) {
// TODO Auto-generated method stub
//接上新队列
}
@Override
publicvoid insert(E e, int index) {
// TODO Auto-generated method stub
}
}
(未完成项目之后会公布答案~大家稍安勿躁哈)
相关推荐
自定义Queue队列意味着我们需要创建一个类来实现Queue接口,以满足特定的需求或性能优化。 首先,让我们了解一下`java.util.Queue`接口提供的主要方法: 1. `void add(E e)`: 向队列尾部添加元素,如果队列已满,...
准备工作,自定义队列>”表明这是一个关于软件开发的项目,特别提到了“准备工作”和“自定义队列”。这通常意味着开发者在创建一个名为“我的画图板1.0”的应用程序时,正在为其基础架构进行规划,其中自定义队列是...
自定义队列通常涉及到设计一个类,该类包含添加元素(enqueue)和移除元素(dequeue)的方法。测试用例对于确保队列功能的正确性至关重要,包括检查队列的大小、元素插入和删除的顺序,以及队列是否能在满时阻止...
在这个“ios-自定义Operation队列实现直播礼物动画.zip”项目中,开发者利用自定义的`NSOperation`子类来构建一个动画队列,用于处理直播过程中的礼物动画效果。直播礼物动画是提升用户互动体验的重要组成部分,它...
自定义的C++队列类,可以建立队列,Push元素,枚举元素等
标题“android自定义消息队列”指的是开发者为Android应用创建一个自定义的消息传递机制,这通常涉及到线程间通信和任务调度。描述中的“实现的简单的开始,暂停功能”意味着这个自定义消息队列能够控制任务的执行...
标题 "索引队列-C#中的自定义队列" 指向了一个特定的数据结构实现,即在C#编程环境中创建一个支持索引访问的队列。在标准的`System.Collections.Generic.Queue<T>`类中,元素只能通过入队(Enqueue)和出队...
标题中的“C# Winform可忽略消息的自定义消息队列”指的是创建一个特定的机制,允许在WinForm应用中,对控件事件产生的消息进行管理和筛选,确保只有最终需要的消息才会被执行,从而提高程序的响应速度和流畅性。...
该消息队列不能依赖于已有库的队列,必须是自己设计实现的 该消息队列是线程安全的 该消息队列能接收CLMessage继承体系的消息 该消息队列能融入到本课程所提供的程序库中,能支持线程之间的通信(即需要提供发送消息...
本文档参考了纯粹的activemq java代码和百度上的demo,很简洁的实现了动态消息队列的生成和获取,但是没有自定义监听(当前项目不需要),本文档只有功能实现类 即业务层。若要调用和推送 则需要自己根据需求编写。...
在这个项目中,我们可以找到实现动画队列的关键类或组件,如`PresentAnimView`,它可能是一个自定义的UIView子类,负责处理礼物的展示动画。 1. **动画设计**:在实现刷礼物效果时,我们需要设计每个礼物的动画,这...
现在我们来详细讨论如何利用这些技术实现“BlockingQueue队列自定义超时时间取消线程池任务”。 首先,`BlockingQueue`是一个并发容器,它遵循先进先出(FIFO)原则,具有阻塞性质,当队列满时,生产者线程会被阻塞...
该示例通过 rabbitmq_delayed_message_exchange 插件实现自定义延时时间的延时队列。 示例是纯净的,只引入了需要的架包 启动示例时,请确保MQ已经安装了延时插件(附件里带有插件及安装说明)以及示例的MQ相关的配置...
本文将深入探讨自定义的栈与队列的实现,以及如何利用这两个数据结构的特性来解决问题。 首先,栈(Stack)是一种后进先出(LIFO, Last In First Out)的数据结构。它遵循“先进后出”的原则,类似于现实生活中的堆...
Java 中的双端队列(Deque)是一种特殊的队列,能够在队列的两端进行元素的添加和删除操作。与单端队列不同,双端队列可以在队列的头部和尾部同时进行插入和删除操作。 Java 实现自定义双端队列可以通过链表和数组...
在编程领域,队列是一种基本的数据结构,它遵循“先进先出”(FIFO)的原则。C++标准库中提供了`<queue>`头文件来支持队列操作,但有时为了学习、理解数据结构的底层原理或者实现特定功能,我们需要自定义队列。本篇...
`custom_queue`项目旨在提供一个通用的对象自定义队列实现,它允许开发者根据具体需求定制队列的行为,例如添加特殊操作、同步机制或优化性能。该项目依赖于GSON、Google的异步库以及Jackson Core,这些库分别用于...
在C#编程语言中,创建自定义队列类是一种常见的练习,可以帮助理解数据结构的基础和实现细节。队列是一种先进先出(FIFO,First In First Out)的数据结构,通常用于处理任务调度、数据缓冲等场景。下面我们将详细...
本问题探讨的是如何利用栈和队列的特性来实现一个算法,将给定的队列Q中的所有元素逆置。 首先,我们要明确队列和栈的基本操作。栈通常有push(入栈)、pop(出栈)和peek(查看栈顶元素但不删除)等操作,而队列则...
所谓双端队列(double-ended queue,deque),就是在列表的两端都可以插入和删除数据。 因此它允许的操作有Create、IsEmpty、IsFull、...能将队列由左至右的次序输出于一行,元素间用空格间隔。队列元素类型设为整型。