Java数据结构与算法-----如何设计一个排队系统
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数据结构与算法-----如何设计一个排队系统相关推荐
- java数据结构与算法之(Queue)队列设计与实现
[版权申明]转载请注明出处(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/53375004 出自[zejian的博客] ...
- java数据结构与算法之双链表设计与实现
转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/53047590 出自[zejian的博客] 关联文章: java数据结 ...
- 数据结构 - Java -韩顺平 图解Java数据结构和算法
数据结构 Lesson 1 数据结构的知识总结 1. 几个经典的算法面试题 2. 线性结构与非线性结构 2.1 稀疏数组 sparsearray 2.2 队列 2.2.1 顺序队列: 2.2.2 环形 ...
- Java数据结构和算法(六)——前缀、中缀、后缀表达式
前面我们介绍了三种数据结构,第一种数组主要用作数据存储,但是后面的两种栈和队列我们说主要作为程序功能实现的辅助工具,其中在介绍栈时我们知道栈可以用来做单词逆序,匹配关键字符等等,那它还有别的什么功能吗 ...
- Java数据结构和算法(一)——简介
本系列博客我们将学习数据结构和算法,为什么要学习数据结构和算法,这里我举个简单的例子. 编程好比是一辆汽车,而数据结构和算法是汽车内部的变速箱.一个开车的人不懂变速箱的原理也是能开车的,同理一个不懂数 ...
- java数据结构与算法之顺序表与链表深入分析
转载请注明出处(万分感谢!): http://blog.csdn.net/javazejian/article/details/52953190 出自[zejian的博客] 关联文章: java数据结 ...
- Java数据结构与算法(二)
Java数据结构与算法(二) 第六章 递归 1 递归应用场景 2 递归的概念 3 递归调用机制 4 递归能解决什么样的问题 5 递归需要遵守的重要规则 6 递归-迷宫问题 6.1 迷宫问题 6.2 代 ...
- Java 数据结构与算法
目录 Java 数据结构与算法 数据结构 数据结构的定义 数据的逻辑结构 数据的物理结构 数据存储结构 数据结构的分类 线性结构 非线性结构 常用的数据结构 数组(Array) 栈( Stack) 队 ...
- 输入法核心数据结构及算法的设计
输入法核心数据结构及算法的设计 突然想到了去年腾讯招实习生时笔试的附加题目,就是让你给出一个输入法的设计方案,要求能够提供智能的输入提示,具体题目要求我不太记得了,简单岂见我们只考虑英文输入法~ 问题 ...
最新文章
- 列索引对SharePoint大列表性能的影响
- html预览不出效果是怎么回事,为何HTML文件直接双击打不开 要用浏览器才能打开 之前双击还能打开显示效果的...
- 【推荐系统】一文梳理联邦学习推荐系统研究进展
- active server pages 错误 asp 0126_最终选型 Blazor.Server:又快又稳!
- java循环链表类_3、循环链表(java实现)
- 字节对齐《c和指针》笔记--包含位域结构体的内存对齐(32bit,GCC)
- 小女也爱c#(3)--俄罗斯方块练习数组
- php5.4.45的php.ini文件
- 平凡的世界电子书pdf下载_零基础彩铅画入门教程步骤图及全套PDF电子书教程下载!...
- 五个案例让你明白GCD死锁
- 主要知识产权(专利权,著作权,商标权)的申请与保护
- 窗台上晒了一本书,三个人问了三个问题
- ISO9001质量管理体系申请条件以及认证流程
- krc 编辑 linux,krc文件怎么打开?krc是什么文件?
- Mybatis缓存实现原理
- iOS 什么是MVC
- 定义与声明、头文件与extern总结
- Roaring Bitmap 更好的位图压缩算法
- pip 使用国内阿里云软件源
- 融合VOI与VDI、IDV、RDS,实现弹性的应用