1.问题

设计一个排队系统,能够让每个进入队的用户都能看到自己在队列中所处的位置和变化。队列可能随时有人加入和退出,当有人退出时影响到用户的位置需要及时的反馈到用户。

2.问题分析:

不仅要实现队列常见的入队和出队的功能,还要实现队列中任意元素可以随时出队,并且出队列后需要更新队里用户位置的变化。

3 代码实现

package Queue;import java.util.LinkedList;
import java.util.Objects;
import java.util.Queue;public class MyQueue {private Queue<User> q=new LinkedList<User>();//进队void enQueue(User u){q.add(u);//队列尾增加一个人u.setSep(q.size()+1);//定位新增加用户在队列中的id}//对首元素出队void deQueue(){q.poll();updateSeq();}//队列中随机出队void deQueue(User u){q.remove(u);updateSeq();}//出队后更新队列中每个人的序列void updateSeq(){int i=1;for (User u:q){u.setSep(i++);}}//打印队列的信息void  printList(){for (User u:q){System.out.println(u);}}public static void main(String[] args) {User u1=new User(1,"user1");User u2=new User(2,"user2");User u3=new User(3,"user3");User u4=new User(4,"user4");User u5=new User(5,"user5");MyQueue queue=new MyQueue();queue.enQueue(u1);queue.enQueue(u2);queue.enQueue(u3);queue.enQueue(u4);queue.enQueue(u5);queue.deQueue();//队首出队queue.deQueue(u4);//u4出队queue.printList();}
}class User{private int id;//成员变量 ,唯一标识符idprivate String name;private int sep;//表示每各人的排队的位置public User(int id, String name) {this.id = id;this.name = name;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getSep() {return sep;}public void setSep(int sep) {this.sep = sep;}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;User user = (User) o;return id == user.id;}@Overridepublic String toString() {return "User{" +"id=" + id +", name='" + name + '\'' +", sep=" + sep +'}';}
}

Java数据结构与算法-----如何设计一个排队系统相关推荐

  1. java数据结构与算法之(Queue)队列设计与实现

    [版权申明]转载请注明出处(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53375004 出自[zejian的博客] ...

  2. java数据结构与算法之双链表设计与实现

    转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/53047590 出自[zejian的博客] 关联文章: java数据结 ...

  3. 数据结构 - Java -韩顺平 图解Java数据结构和算法

    数据结构 Lesson 1 数据结构的知识总结 1. 几个经典的算法面试题 2. 线性结构与非线性结构 2.1 稀疏数组 sparsearray 2.2 队列 2.2.1 顺序队列: 2.2.2 环形 ...

  4. Java数据结构和算法(六)——前缀、中缀、后缀表达式

    前面我们介绍了三种数据结构,第一种数组主要用作数据存储,但是后面的两种栈和队列我们说主要作为程序功能实现的辅助工具,其中在介绍栈时我们知道栈可以用来做单词逆序,匹配关键字符等等,那它还有别的什么功能吗 ...

  5. Java数据结构和算法(一)——简介

    本系列博客我们将学习数据结构和算法,为什么要学习数据结构和算法,这里我举个简单的例子. 编程好比是一辆汽车,而数据结构和算法是汽车内部的变速箱.一个开车的人不懂变速箱的原理也是能开车的,同理一个不懂数 ...

  6. java数据结构与算法之顺序表与链表深入分析

    转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/52953190 出自[zejian的博客] 关联文章: java数据结 ...

  7. Java数据结构与算法(二)

    Java数据结构与算法(二) 第六章 递归 1 递归应用场景 2 递归的概念 3 递归调用机制 4 递归能解决什么样的问题 5 递归需要遵守的重要规则 6 递归-迷宫问题 6.1 迷宫问题 6.2 代 ...

  8. Java 数据结构与算法

    目录 Java 数据结构与算法 数据结构 数据结构的定义 数据的逻辑结构 数据的物理结构 数据存储结构 数据结构的分类 线性结构 非线性结构 常用的数据结构 数组(Array) 栈( Stack) 队 ...

  9. 输入法核心数据结构及算法的设计

    输入法核心数据结构及算法的设计 突然想到了去年腾讯招实习生时笔试的附加题目,就是让你给出一个输入法的设计方案,要求能够提供智能的输入提示,具体题目要求我不太记得了,简单岂见我们只考虑英文输入法~ 问题 ...

最新文章

  1. 列索引对SharePoint大列表性能的影响
  2. html预览不出效果是怎么回事,为何HTML文件直接双击打不开 要用浏览器才能打开 之前双击还能打开显示效果的...
  3. 【推荐系统】一文梳理联邦学习推荐系统研究进展
  4. active server pages 错误 asp 0126_最终选型 Blazor.Server:又快又稳!
  5. java循环链表类_3、循环链表(java实现)
  6. 字节对齐《c和指针》笔记--包含位域结构体的内存对齐(32bit,GCC)
  7. 小女也爱c#(3)--俄罗斯方块练习数组
  8. php5.4.45的php.ini文件
  9. 平凡的世界电子书pdf下载_零基础彩铅画入门教程步骤图及全套PDF电子书教程下载!...
  10. 五个案例让你明白GCD死锁
  11. 主要知识产权(专利权,著作权,商标权)的申请与保护
  12. 窗台上晒了一本书,三个人问了三个问题
  13. ISO9001质量管理体系申请条件以及认证流程
  14. krc 编辑 linux,krc文件怎么打开?krc是什么文件?
  15. Mybatis缓存实现原理
  16. iOS 什么是MVC
  17. 定义与声明、头文件与extern总结
  18. Roaring Bitmap 更好的位图压缩算法
  19. pip 使用国内阿里云软件源
  20. 融合VOI与VDI、IDV、RDS,实现弹性的应用

热门文章

  1. 【leetCode189】轮转数组
  2. Hash、MD5、SHA1工具下载地址
  3. python爬取学校教务管理系统
  4. 《数据结构》(C++)之第一章:绪论
  5. 简单有限元的C++编程
  6. 【kratos入门实战教程】1-kratos项目搭建和开发环境配置
  7. 邪恶的大叔(push)
  8. 苹果电脑系统恢复数据怎么操作?
  9. 《Spark商业案例与性能调优实战100课》第6课:商业案例之通过Spark SQL实现大数据电影用户行为分析
  10. 邮件客户端绑定各种邮箱