自定义队列的目的:
原因一:在java中定义数组都是有一定长度的,因为在java中是无法
动态改变内存的。在我们进行二维数组重绘画板的时候,有时就会出
现数组下标溢出的情况。
原因二:数组在定义的时候,数据类型就已经固定了,所以存储的类
型也就固定了。
所以,我们要用自定义队列。
自定义队列怎样实现动态改变数组?
定义一个类,因为类和数组一样都是存储数据的容器,再在这个类里
面封装一个数组,在类中对数组进行添加、删除、查找、改动等操作
,也就是说在这个类中定义这一系列的方法来实现。
那么下面,用代码来说明步骤:
//定义一个DefinedList类
public class DefinedList {
//在这个类里面封装一个数组
Object[]list=new Object[0];
//定义添加方法
public void add(Object style){
Object[] op=new Object[list.length+1];
//要添加的元素赋给新数组的最后一个位置
op[list.length]=style;
//将原始数组中的数据和要添加的数据存储到
新的数组中
for(int i=0;i<list.length;i++){
op[i]=list[i];
}
//交换数组
list=op;
}
//删除方法和添加方法步骤是很类似的
public void delete(int index){
//不过长度减1了
Object[] oj=new Object[list.length-1];
//如果要删除数组元素的索引小于0并且大于数组长度则返回,不执
行
if(index<=0&&index>list.length){
return;
}
//i小于索引的时候,前面的就相等
for(int i=0;i<index;i++){
oj[i]=list[i];
}
//i大于索引的时候,赋值给新数组,删掉就相当于原来的
索引-1
for(int i=index+1;i<list.length;i++){
oj[i-1]=list[i];
}
list=oj;
}
public Object search(int index){
return list[index];
}
public int size(){
return list.length;
}
}
接着再定义一个主方法:
import java.util.Random;
import Inherit.Script;
public class Test {
/**
* 定义一个主方法来实现队列
*/
public static void main(String[] args) {
//实例化一个DefinedList类的对象dl
DefinedList dl=new DefinedList();
//循环加入15个元素
for(int i=0;i<15;i++){
//实例化一个Script类的对象sc
Script sc=new Script() ;
//将数字强制转换为char型
sc.name="名字"+(char)(69+i);
//实例化随机数对象
Random rand=new Random();
//随机数对象在100之内取值
int j=rand.nextInt(100);
//这些100内的随机数就是sc.name的分数
sc.score="分数"+j;
//加入队列中
dl.add(sc);
}
//删掉index=8的元素
dl.delete(8);
for(int i=0;i<dl.size();i++){
//循环找到每一个元素
Script df=(Script)dl.search(i);
//输出
System.out.println(df.name+"的分数是:"+df.score);
}
}
}
在这中间出现了一个问题:
就是最后面:
Script df=(Script)dl.search(i);
//输出
System.out.println(df.name+"的分数是:"+df.score);
在这里,我第一次没有将dl强制转换为Script类型的,这样就总会报
错,如果都定义成Object类的,虽说java中所有类的父类都是它,但
是却无法调用Script中的姓名,分数等属性,所以必须强转,这样就
避免了许多错误。
分享到:
相关推荐
准备工作,自定义队列>”表明这是一个关于软件开发的项目,特别提到了“准备工作”和“自定义队列”。这通常意味着开发者在创建一个名为“我的画图板1.0”的应用程序时,正在为其基础架构进行规划,其中自定义队列是...
本文将深入探讨Java中自定义队列的操作、XML文件的处理以及如何进行文件夹操作。 首先,让我们来讨论自定义队列。在计算机科学中,队列是一种先进先出(FIFO)的数据结构,它在Java中可以通过实现`java.util.Queue`...
标题 "索引队列-C#中的自定义队列" 指向了一个特定的数据结构实现,即在C#编程环境中创建一个支持索引访问的队列。在标准的`System.Collections.Generic.Queue<T>`类中,元素只能通过入队(Enqueue)和出队...
自定义Queue队列意味着我们需要创建一个类来实现Queue接口,以满足特定的需求或性能优化。 首先,让我们了解一下`java.util.Queue`接口提供的主要方法: 1. `void add(E e)`: 向队列尾部添加元素,如果队列已满,...
在这个“ios-自定义Operation队列实现直播礼物动画.zip”项目中,开发者利用自定义的`NSOperation`子类来构建一个动画队列,用于处理直播过程中的礼物动画效果。直播礼物动画是提升用户互动体验的重要组成部分,它...
自定义的C++队列类,可以建立队列,Push元素,枚举元素等
`custom_queue`项目旨在提供一个通用的对象自定义队列实现,它允许开发者根据具体需求定制队列的行为,例如添加特殊操作、同步机制或优化性能。该项目依赖于GSON、Google的异步库以及Jackson Core,这些库分别用于...
在这个项目中,我们可以找到实现动画队列的关键类或组件,如`PresentAnimView`,它可能是一个自定义的UIView子类,负责处理礼物的展示动画。 1. **动画设计**:在实现刷礼物效果时,我们需要设计每个礼物的动画,这...
标题“android自定义消息队列”指的是开发者为Android应用创建一个自定义的消息传递机制,这通常涉及到线程间通信和任务调度。描述中的“实现的简单的开始,暂停功能”意味着这个自定义消息队列能够控制任务的执行...
自定义队列的实现方式有: 1. 双端队列(Deque):可以同时在两端进行入队和出队操作,例如C++中的`std::deque`。 2. 链表:使用链表,入队在尾部插入节点,出队则删除头部节点。 3. 循环数组:当数组满时,通过循环...
但如果你想自定义队列,你可以创建一个类,包含一个数组作为底层数据结构,并实现添加元素(Enqueue)、移除元素(Dequeue)以及检查队首元素(Peek)等方法。以下是一个简单的自定义队列的C#实现: ```csharp ...
在C++中,我们可以使用标准模板库(STL)中的`queue`容器来方便地实现队列操作,但为了深入理解其工作原理,也可以自定义队列结构。下面将详细探讨如何在C++中创建、插入和删除队列。 1. 队列的创建: 在C++中,...
2 自定义队列 http://127.0.0.1:8000/get?queueName=队列名称 获取队列内容: http://127.0.0.1:8000/getList?队列名称 http://127.0.0.1:8000/getList queueName 获取队列长度: http://127.0.0.1:8000/getLen ...
C++标准库中提供了`<queue>`头文件来支持队列操作,但有时为了学习、理解数据结构的底层原理或者实现特定功能,我们需要自定义队列。本篇文章将深入探讨如何使用C++实现一个简单的队列。 首先,我们需要定义队列的...
但有时为了学习和理解,或者在特定需求下,开发者会选择自定义队列。"myQueue.rar"文件可能就包含这样的实现。自定义队列的基本操作包括: 1. **初始化**:创建一个空队列。 2. **入队**(enqueue):在队尾添加...
虽然C++标准库提供了`std::queue`,但在某些情况下,我们可能需要自定义队列的实现,例如为了优化性能、满足特定需求或进行教学目的。下面是一个简单的基于数组实现的队列: ```cpp template class Queue { ...
为了解决这个问题,我们可以采用自定义消息队列来优化处理流程,从而实现异步处理,避免UI线程被长时间占用。 标题中的“C# Winform可忽略消息的自定义消息队列”指的是创建一个特定的机制,允许在WinForm应用中,...
2 自定义队列 http: 127 0 0 1:8000 postPut post方式提交json串 {"postData”:”入队内容" "queueName":"队列名称”} 出队: 1 默认队列 http: 127 0 0 1:8000 get 2 自定义队列 ...
在某些特定场景下,可能需要自定义队列实现,例如为了优化性能或者实现特殊功能。这时,可以使用C++的继承机制,创建一个新的类来继承`std::queue`,并覆盖其成员函数。自定义队列通常需要重写`push`、`pop`、`front...
2. **数据成员**:使用`std::queue`或自定义队列结构,以及`std::mutex`和`std::condition_variable`来实现同步。 3. **方法声明**:包括`push()`, `pop()`, `take()`, `try_pop()`, `size()`等操作,这些方法需要...