队列的java实现
今天老师提出一个问题,就是如何用java实现队列呢?我在网上找了许多资料,发现java也是可以很轻松的实现队列。
如下代码:
package com; import java.util.Collection;
import java.util.Iterator;
import java.util.Queue; public class Aqueue implements Queue {
private Node first; private Node last; private int num; public Aqueue(){
this.first = null;
this.last = null;
this.num = 0;
}
@Override
public int size() {
return this.num;
} @Override
public boolean isEmpty() {
return false;
} @Override
public boolean contains(Object o) {
return false;
} @Override
public Iterator iterator() {
return null;
} @Override
public Object[] toArray() {
return new Object[0];
} @Override
public Object[] toArray(Object[] a) {
return new Object[0];
} @Override
public boolean add(Object o) {
Node node = new Node();
node.data = o;
if (this.first == null){
this.first = node;
this.last = node;
}else {
this.last.setNext(node);
this.last = node;
}
this.num++;
return true;
} @Override
public boolean remove(Object o) {
return false;
} @Override
public boolean addAll(Collection c) {
return false;
} @Override
public void clear() { } @Override
public boolean retainAll(Collection c) {
return false;
} @Override
public boolean removeAll(Collection c) {
return false;
} @Override
public boolean containsAll(Collection c) {
return false;
} @Override
public boolean offer(Object o) {
return false;
} @Override
public Object remove() {
return null;
} @Override
//返回到第一个元素出队列
public Object poll() { if (this.first == null){
return null;
}else {
Node n = this.first;
this.first = this.first.getNext();
n.setNext(null);
this.num--;
return n.getData();
}
} @Override
public Object element() {
return null;
} @Override
//返回到第一个元素,不出队列
public Object peek() {
return null;
}
private class Node{
//数据域
private Object data;
//引用域
private Node next; public Object getData() {
return data;
} public void setData(Object data) {
this.data = data;
} public Node getNext() {
return next;
} public void setNext(Node next) {
this.next = next;
}
}
}
用java自带的java.util.Queue就可以轻松实现,中间有好多方法没有实现,后期我再补上,接下来写测试类。
package test; import com.Aqueue; public class Test
{
public static void main(String[] args) {
Aqueue q = new Aqueue(); for (int i = 0; i < 100;i++){
q.add(i);
} int num = q.size();
for (int i = 0; i < num;i++){
System.out.println(q.poll());
}
}
}
ok,这样就可以实现了。
如果有啥不对的,请大哥们指明,小白涉世未深,急需指导。
队列的java实现的更多相关文章
- 算法_栈与队列的Java链表实现
链表是一个递归的数据结构,它或者为null,或者是指向一个结点的引用,该结点含有一个泛型的元素和指向另一个链表的引用.可以用一个内部类来定义节点的抽象数据类型: private class Node ...
- 数据结构之栈和队列及其Java实现
栈和队列是数据结构中非常常见和基础的线性表,在某些场合栈和队列使用很多,因此本篇主要介绍栈和队列,并用Java实现基本的栈和队列,同时用栈和队列相互实现. 栈:栈是一种基于“后进先出”策略的线性表.在 ...
- 数据结构--队列(Java实现)
数据结构--队列(Java实现) 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 简介 队列是一种特殊的线性表,特殊之处在于它只 ...
- 算法_队列的Java通用数组实现
在实现Queue的API的时候,可以使用两个实例变量做索引,一个变量head指向队列的开头,另一个变量tail指向队列的结尾.在删除一个元素的时候,使用head访问,并将head+1,插入一个元素的时 ...
- Java中的队列:java.util.Queue接口
队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作. Queue接口与List.Set同一级别,都是继承了Collection接口.Linked ...
- 栈和队列的Java实现
一. 栈 1.概念 栈是一种特殊的线性表,它只能在栈顶(top)进行插入(push)和删除(pop)操作. 栈的常用操作: 入栈(push):向栈顶插入元素 出栈(pop):从栈顶删除元素 访问栈顶 ...
- Java Design Demo -简单的队列-异步多任务队列(java android)
简单的单线程队列 -- 工作的时候遇到劣质打印机.给打印机发消息,打印机就会打印,如果在打印机还在打印的时候,就 再发消息打印,就会出现消息丢失.所以需要给上一个任务一些处理的间隔时间. 单线程的消息 ...
- 数据结构队列的java实现,包括线性和链式两种方式
实现的思路为: 采用泛型的方式,首先定义了一个Queue的接口,然后通过实现该接口实现了线性和链式的两种形式的队列: 接口代码如下: package com.peter.java.dsa.interf ...
- 栈和队列的java简单实现
今天看了一本书<啊哈 算法>,书的内容不多,一共两章,第一章是常见的排序算法包括桶排序.冒泡排序和快速排序,这些事基础的排序算法网上有很多资料说明,这里主要说第二章栈,对列,链表,书上使用 ...
- 剑指offer-面试题7:俩个栈实现队列(java)
详细分析请参照C语言版,这里仅仅给出实现代码,注释很详细,不得不说java各种api用起来真是爽飞了 1 package com.xsf.SordForOffer; 2 3 import java.u ...
随机推荐
- 【uniapp 开发】如何给边框添加阴影效果
css的box-shadow是用来添加边框阴影效果的. 属性值详解: 1.inset 可选值,默认阴影在盒子外 使用inset后,阴影在盒子内,即使指定边框或者透明边框,阴影依然存在. 2. 这是头两 ...
- 使用Vue_CLI_3快速创建项目
- SpringBoot利用自定义注解实现通用的JWT校验方案
利用注解开发一个通用的JWT前置校验功能 设计的预期: 系统中并不是所有的应用都需要JWT前置校验,这就需要额外设计一个注解Annotation来标识这个方法需要JWT前置校验.例如: @GetMap ...
- 硬件vendor id查询对照列表
Hex-ID Vendor Name003D Lockheed Martin Corp0E11 Compaq1000 Symbios Logic Inc.1001 KOLTER ELECTRONIC1 ...
- 使用C#制作九九
效果图如下 源码如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; usi ...
- 共读《redis设计与实现》-单机(一)
上一章我们讲了 redis 基本类型的数据结构 和 对象系统 ,这篇来说一下单机redis 的知识点. 一.数据库 一个数据库在redis中就有一个结构体,而数据库的结构体是由redisServer这 ...
- javascript中的Ajax基础(一)
一.手写一个ajax 1 const xhr = new xmlHttpRequest() 2 3 xhr.open(请求方式:post get, 请求地址, 同步或者异步) 4 5 xhr.onre ...
- react实战系列 —— 起步(mockjs、第一个模块、docusaurus)
其他章节请看: react实战 系列 起步 本篇我们首先引入 mockjs ,然后进入 spug 系统,接着模仿"任务计划"模块实现一个类似的一级导航页面("My任务计划 ...
- ElasticSearch7.3学习(二十)----采用restful风格查询详解
1.Query DSL入门 1.1 DSL DSL:Domain Specified Language,特定领域的语言.es特有的搜索语言,可在请求体中携带搜索条件,功能强大. 查询全部 GET /b ...
- XCTF练习题---WEB---robots
XCTF练习题---WEB---robots flag:cyberpeace{6c4b08933075fc620d16d1157ee07a7e} 解题步骤: 1.观察题目,打开场景 2.打开实验场景, ...