`
香煎马鲛鱼
  • 浏览: 109529 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

自定义队列(一)小试牛刀

    博客分类:
  • java
阅读更多

自定义队列

学过编程语言的同学都知道,我们可以用数组来储存数据,可是数组有一个非常大的弊端就是一旦定义后就无法改变其长度,可是在很多情况下我们是无法预计我们所要存的数据有多少的,比如:我需要存储多个的学生信息,但是先却不知道学生的个数,此事,定义一个自定义队列,就可以很快解决,下面我给大家做个示范,如何定义自定义列表:

我们所定义的学生类:

//这个类只用于测试:

文件名: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

    

   }

 

  

}

(未完成项目之后会公布答案~大家稍安勿躁哈)

分享到:
评论

相关推荐

    java 自定义Queue队列

    自定义Queue队列意味着我们需要创建一个类来实现Queue接口,以满足特定的需求或性能优化。 首先,让我们了解一下`java.util.Queue`接口提供的主要方法: 1. `void add(E e)`: 向队列尾部添加元素,如果队列已满,...

    我的画图板1.0<细说1.准备工作,自定义队列>

    准备工作,自定义队列&gt;”表明这是一个关于软件开发的项目,特别提到了“准备工作”和“自定义队列”。这通常意味着开发者在创建一个名为“我的画图板1.0”的应用程序时,正在为其基础架构进行规划,其中自定义队列是...

    自定义队列,XML,文件夹

    自定义队列通常涉及到设计一个类,该类包含添加元素(enqueue)和移除元素(dequeue)的方法。测试用例对于确保队列功能的正确性至关重要,包括检查队列的大小、元素插入和删除的顺序,以及队列是否能在满时阻止...

    ios-自定义Operation队列实现直播礼物动画.zip

    在这个“ios-自定义Operation队列实现直播礼物动画.zip”项目中,开发者利用自定义的`NSOperation`子类来构建一个动画队列,用于处理直播过程中的礼物动画效果。直播礼物动画是提升用户互动体验的重要组成部分,它...

    自定义C++队列类

    自定义的C++队列类,可以建立队列,Push元素,枚举元素等

    android自定义消息队列

    标题“android自定义消息队列”指的是开发者为Android应用创建一个自定义的消息传递机制,这通常涉及到线程间通信和任务调度。描述中的“实现的简单的开始,暂停功能”意味着这个自定义消息队列能够控制任务的执行...

    索引队列-C#中的自定义队列

    标题 "索引队列-C#中的自定义队列" 指向了一个特定的数据结构实现,即在C#编程环境中创建一个支持索引访问的队列。在标准的`System.Collections.Generic.Queue&lt;T&gt;`类中,元素只能通过入队(Enqueue)和出队...

    C# winform可忽略消息的自定义消息队列

    标题中的“C# Winform可忽略消息的自定义消息队列”指的是创建一个特定的机制,允许在WinForm应用中,对控件事件产生的消息进行管理和筛选,确保只有最终需要的消息才会被执行,从而提高程序的响应速度和流畅性。...

    编写自定义的消息队列

    该消息队列不能依赖于已有库的队列,必须是自己设计实现的 该消息队列是线程安全的 该消息队列能接收CLMessage继承体系的消息 该消息队列能融入到本课程所提供的程序库中,能支持线程之间的通信(即需要提供发送消息...

    spring 整合activemq实现自定义动态消息队列

    本文档参考了纯粹的activemq java代码和百度上的demo,很简洁的实现了动态消息队列的生成和获取,但是没有自定义监听(当前项目不需要),本文档只有功能实现类 即业务层。若要调用和推送 则需要自己根据需求编写。...

    swift-iOS动画队列-仿映客刷礼物效果

    在这个项目中,我们可以找到实现动画队列的关键类或组件,如`PresentAnimView`,它可能是一个自定义的UIView子类,负责处理礼物的展示动画。 1. **动画设计**:在实现刷礼物效果时,我们需要设计每个礼物的动画,这...

    BlockingQueue队列自定义超时时间取消线程池任务

    现在我们来详细讨论如何利用这些技术实现“BlockingQueue队列自定义超时时间取消线程池任务”。 首先,`BlockingQueue`是一个并发容器,它遵循先进先出(FIFO)原则,具有阻塞性质,当队列满时,生产者线程会被阻塞...

    SpringBoot集成RabbitMQ延时队列,自定义延时时间Demo

    该示例通过 rabbitmq_delayed_message_exchange 插件实现自定义延时时间的延时队列。 示例是纯净的,只引入了需要的架包 启动示例时,请确保MQ已经安装了延时插件(附件里带有插件及安装说明)以及示例的MQ相关的配置...

    自定义的栈与队列

    本文将深入探讨自定义的栈与队列的实现,以及如何利用这两个数据结构的特性来解决问题。 首先,栈(Stack)是一种后进先出(LIFO, Last In First Out)的数据结构。它遵循“先进后出”的原则,类似于现实生活中的堆...

    java双端队列的实现-Java实现自定义双端队列(链表和数组两种方式) 数组和链表.pdf

    Java 中的双端队列(Deque)是一种特殊的队列,能够在队列的两端进行元素的添加和删除操作。与单端队列不同,双端队列可以在队列的头部和尾部同时进行插入和删除操作。 Java 实现自定义双端队列可以通过链表和数组...

    C++实现一个队列

    在编程领域,队列是一种基本的数据结构,它遵循“先进先出”(FIFO)的原则。C++标准库中提供了`&lt;queue&gt;`头文件来支持队列操作,但有时为了学习、理解数据结构的底层原理或者实现特定功能,我们需要自定义队列。本篇...

    custom_queue:通用对象的自定义队列实现

    `custom_queue`项目旨在提供一个通用的对象自定义队列实现,它允许开发者根据具体需求定制队列的行为,例如添加特殊操作、同步机制或优化性能。该项目依赖于GSON、Google的异步库以及Jackson Core,这些库分别用于...

    C#编写一个类实现队列的功能,

    在C#编程语言中,创建自定义队列类是一种常见的练习,可以帮助理解数据结构的基础和实现细节。队列是一种先进先出(FIFO,First In First Out)的数据结构,通常用于处理任务调度、数据缓冲等场景。下面我们将详细...

    已知Q是一个非空队列,S是一个空栈。仅用队列和栈的ADT函数和少量工作变量,编写一个算法,将队列Q中的所有元素逆置

    本问题探讨的是如何利用栈和队列的特性来实现一个算法,将给定的队列Q中的所有元素逆置。 首先,我们要明确队列和栈的基本操作。栈通常有push(入栈)、pop(出栈)和peek(查看栈顶元素但不删除)等操作,而队列则...

    自定义双端队列

    所谓双端队列(double-ended queue,deque),就是在列表的两端都可以插入和删除数据。 因此它允许的操作有Create、IsEmpty、IsFull、...能将队列由左至右的次序输出于一行,元素间用空格间隔。队列元素类型设为整型。

Global site tag (gtag.js) - Google Analytics