import java.util.Collection;

import java.util.Iterator;

import java.util.LinkedList;

import java.util.Queue;

/**

* 固定长度队列

*

*/

public class LimitQueue implements Queue{

//队列长度

private int limit;

Queue queue = new LinkedList();

public LimitQueue(int limit){

this.limit = limit;

}

/**

* 入队

* @param e

*/

@Override

public boolean offer(E e){

if(queue.size() >= limit){

//如果超出长度,入队时,先出队

queue.poll();

}

return queue.offer(e);

}

/**

* 出队

* @return

*/

@Override

public E poll() {

return queue.poll();

}

/**

* 获取队列

* @return

*/

public Queue getQueue(){

return queue;

}

/**

* 获取限制大小

* @return

*/

public int getLimit(){

return limit;

}

@Override

public boolean add(E e) {

return queue.add(e);

}

@Override

public E element() {

return queue.element();

}

@Override

public E peek() {

return queue.peek();

}

@Override

public boolean isEmpty() {

return queue.size() == 0 ? true : false;

}

@Override

public int size() {

return queue.size();

}

@Override

public E remove() {

return queue.remove();

}

@Override

public boolean addAll(Collection extends E> c) {

return queue.addAll(c);

}

@Override

public void clear() {

queue.clear();

}

@Override

public boolean contains(Object o) {

return queue.contains(o);

}

@Override

public boolean containsAll(Collection> c) {

return queue.containsAll(c);

}

@Override

public Iterator iterator() {

return queue.iterator();

}

@Override

public boolean remove(Object o) {

return queue.remove(o);

}

@Override

public boolean removeAll(Collection> c) {

return queue.removeAll(c);

}

@Override

public boolean retainAll(Collection> c) {

return queue.retainAll(c);

}

@Override

public Object[] toArray() {

return queue.toArray();

}

@Override

public T[] toArray(T[] a) {

return queue.toArray(a);

}

}

package com.gary.test;

import com.gary.util.LimitQueue;

public class TestQueue {

public static void main(String[] args) {

LimitQueue lqueue = new LimitQueue(3);

lqueue.offer("1");

lqueue.offer("2");

lqueue.offer("3");

lqueue.offer("4");

//1因超出队列大小限制已自动出队,输出结果为2,3,4

for (String string : lqueue.getQueue()) {

System.out.println(string);

}

}

}

java队列长度_Java实现固定长度队列相关推荐

  1. java 固定长度队列_如何彻底搞懂 Java 数据结构?|CSDN 博文精选

    作者 | 张振华.Jack 责编 | 郭芮 出品 | CSDN 博客 本文和大家一起来重温<Java数据结构>经典之作. Java数据结构 要理解Java数据结构,必须能清楚何为数据结构? ...

  2. java随机产生100个大小写字母_Java生成固定长度的随机字符串(以大小写字母和数字)...

    packageorg.jimmy.autosearch2019.test;importjava.util.ArrayList;importjava.util.Random;/***@authorラピス ...

  3. Java 实现固定长度队列,自动删除最早添加的数据

    1. 长度固定,不能太长了,就最近的几条就可以,所以需要固定的队列. 2. 在添加的时候,自动删除最早添加的记录. 3. 输出的时候,倒序输出 简单的代码如下,主要使用了 org.apache.com ...

  4. java固定数组_Java在固定长度的数组里加入一个数

    展开全部 题目:给定一个有序的数组{13, 15, 19, 28, 33, 45, 78, 106},如果往该32313133353236313431303231363533e59b9ee7ad943 ...

  5. 循环队列的java结构_java数据结构之循环队列(数组实现)

    package com.ws.队列.数组环形队列; //环形数组队列 //判断满:尾+1%队列长度==头 //添加数据:要(尾+1)%数组长度 //取出数据:要(头+1)%数组长度 因为这两个都是循环 ...

  6. java数组大小不固定_Java的数组长度为什么不能改变?

    Java中的数组是定长的!你这样int[] a ={}; 定义出来的数组a 长度为0,已经是定长了,之后再给它赋值是不可以的,因为它的长度定义出来之后是不可改变的了.所以在使用数组的时候,一定要注意长 ...

  7. java输出字符串的长度_Java格式化字串输出固定长度

    字串格式化输出经常用到,将字串固定输出长度可以使用如下方式格式化输出: String name = "youxiong"; name = String.format("% ...

  8. 自定义队列(优化了数组固定长度的弊端)以及集合中的一些重点内容

    java中的数组在声明的的时候都会要求输入数组的的大小,有的时候在事先会不知道要加入的东西的大小,那我们怎么定义数组的大小呢,定多大合适呢,这就成为一个难题.其实Java中的集合会解决这个问题,但它是 ...

  9. Java编程笔试时输入问题:如何输入固定长度、不定长度的一维数组?如何输入固定长度、不定长度的二维数组?

    Java编程笔试时输入问题: 如何输入固定长度.不定长度的一维数组? 如何输入固定长度.不定长度的二维数组? 如何将数组中的内容直接输出,不要中括号和逗号? 文章目录 ==Java编程笔试时输入问题= ...

最新文章

  1. [开源].NET数据库访问框架Chloe.ORM
  2. 物理服务器对应多个虚拟节点,一台物理机如何开多个云服务器
  3. Deep Belief Networks
  4. Framework打包
  5. python hookapi_pytest文档70-Hook钩子函数完整API总结​
  6. 实战02_SSM整合ActiveMQ支持多种类型消息
  7. .net 实时通信_【WebSocket】实时多人答题对战游戏
  8. Tidal Finance在Uniswap开启流动性挖矿
  9. Java之消息摘要(MD5)
  10. 1以下数字Oracle打印缺少0,Oracle SQL中缺少關鍵字
  11. SQL server 基础语法
  12. 360浏览器的极速模式和兼容模式的区别
  13. 白盒测试技术—逻辑覆盖方法
  14. SpaceSniffer(磁盘大小扫描分析) 彻底解决C盘爆满问题 清理C盘必备软件
  15. 【云片网】使用云片网发送注册短信验证码
  16. 三维纽结与弦理论的一些猜想
  17. 【华人学者风采】胡瑞忠 中国科学院
  18. 从零开始Android游戏编程(第二版) 第一章 搭建开发环境
  19. JavaScript IndexedDB 完整指南
  20. 计算机操作系统学习(五)文件管理

热门文章

  1. QQ空间搬家工具 发布
  2. 产品防伪码查询系统_学历学籍查询系统_证书查询系统_录取成绩查询系统_工资查询系统_信息查询系统
  3. java sql 查询中的转义序列不对_在 JDBC 中使用 SQL 转义序列 - SQL Server | Microsoft Docs...
  4. e树企业管理系统 服务器连接,e树企业管理系统erp软件
  5. 常微分方程(Ordinary Differential Equation I)
  6. 使用ren命令批量修改照片名
  7. Android 忘记锁屏密码的解决办法
  8. 图扑孪生工厂流水线组态图可视化
  9. 我的C++实践(10-15)
  10. PGP加密,良好隐私密码法