
数据量不大,排序花不了多少时间的。
其实既然你要求的“要求服务时间”是固定的,那么优先级就等于1+等待时间/要求服务时间。也就是优先级和顷凳等待时间是线性关系。而且,刚服务的那人等待时间被清0了,一定是最小的,所雀启旅以这样:每处理一个业务,检查他时间到没,到了出队列,没到排队尾,因为他的等待时间是0,必然最小,而刚才没有做业务的旁弯,等待时间都同等增加的,所以他们的优先级次序没变,直接把下个拿过来办就行了
给你说个思路1. 按行读文件, 每猛李者一行split('\\s'扰逗),然后只要id 这个String
2. 然后取id后的十六进制数
3. 将枝薯此行和这一整行(value)和它对应的十六进制数(key)写入一个map
4. 对十六进制树进行排序
5. get by key
6. 输出
import java.awt.Colorimport java.awt.event.ActionEvent
import java.awt.event.ActionListener
import java.awt.event.WindowAdapter
import java.awt.event.WindowEvent
import javax.swing.ButtonGroup
import javax.swing.JButton
import javax.swing.JFrame
import javax.swing.JLabel
import javax.swing.JPanel
import javax.swing.JTextField
public class BankWaiting extends JFrame implements ActionListener {
int total = 0, now = 0
boolean is1Ready = false, is2Ready = false, is3Ready = false
int call1, call2, call3
JFrame jf
JLabel jr, jl, jl1, j2, jl2, j3, jl3
JTextField jr4
JButton jb, jb1, jb2, j1
JButton workBut1, workBut2, workBut3
JPanel jp, jp1, jp2
public BankWaiting() {
setLayout(null)
jf = new JFrame("银行叫号程序")// 窗体
jr = new JLabel("请**号到*号窗口办理业务")
jr.setBounds(300, 10, 800, 50)
jr.setForeground(Color.red)
j1 = new JButton("取号")
j1.addActionListener(this)
jr4 = new JTextField("欢迎")
jr4.setEditable(false)
ButtonGroup bg = new ButtonGroup()
bg.add(j1)
jp = new JPanel()
jl = new JLabel("一悔返号窗口")
jl1 = new JLabel("一号窗口,欢迎你!")
jb = new JButton("下一位")
workBut1 = new JButton("开始燃纯办理")
workBut1.addActionListener(this)
jb.addActionListener(this)
jp.setBackground(Color.pink)
jp.setSize(200, 80)// 大小
jp.setLocation(20, 120)// 位置
jf.setLayout(null)
jp1 = new JPanel()
j2 = new JLabel("二号窗口")
jl2 = new JLabel("二号窗口碧段饥,欢迎你!")
jb1 = new JButton("下一位")
workBut2 = new JButton("开始办理")
jb1.addActionListener(this)
workBut2.addActionListener(this)
jp1.setBackground(Color.pink)
jp1.setSize(200, 80)// 大小
jp1.setLocation(250, 120)// 位置
jf.setLayout(null)
jp2 = new JPanel()
j3 = new JLabel("三号窗口")
jl3 = new JLabel("三号窗口,欢迎你!")
jb2 = new JButton("下一位")
workBut3 = new JButton("开始办理")
workBut3.addActionListener(this)
jb2.addActionListener(this)
jp2.setBackground(Color.pink)
jp2.setSize(200, 80)// 大小
jp2.setLocation(500, 120)// 位置
jf.setLayout(null)
jf.add(jp)
jf.add(jp1)
jf.add(jp2)
jf.add(jr)
jp.add(jl)
jp.add(jl1)
jp.add(jb)
jp.add(workBut1)
jp1.add(j2)
jp1.add(jl2)
jp1.add(jb1)
jp1.add(workBut2)
jp2.add(j3)
jp2.add(jl3)
jp2.add(jb2)
jp2.add(workBut3)
jf.add(j1)
jf.add(jr4)
j1.setBounds(550, 300, 60, 30)
jr4.setBounds(300, 300, 200, 40)
jf.setSize(800, 600)
jf.setVisible(true)
jf.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0)
}
})
}
public void actionPerformed(ActionEvent e) {
String s = ""
if (e.getSource() == j1) {
s = "第" + (++total) + "号,前面还有" + (total - now - 1) + "位顾客!"
jr4.setText(s)
}
if (e.getSource() == jb) {
if (this.hasCustomers()) {
s = "请" + (++now) + "号顾客到一号窗口办理"
call1 = now
jl1.setText(s)
jr.setText(s)
is1Ready = true
} else {
s = "当前已经没有顾客了"
jl1.setText(s)
is1Ready = false
}
} else if (e.getSource() == jb1) {
if (this.hasCustomers()) {
s = "请" + (++now) + "号顾客到二号窗口办理"
call2 = now
jl2.setText(s)
jr.setText(s)
is2Ready = true
} else {
s = "当前已经没有顾客了"
jl2.setText(s)
is2Ready = false
}
} else if (e.getSource() == jb2) {
if (this.hasCustomers()) {
s = "请" + (++now) + "号顾客到三号窗口办理"
call3 = now
jl3.setText(s)
jr.setText(s)
is3Ready = true
} else {
s = "当前已经没有顾客了"
jl3.setText(s)
is3Ready = false
}
}
if (e.getSource() == workBut1) {
if (is1Ready) {
s = call1 + "号顾客正在办理业务。。。"
jl1.setText(s)
is1Ready = false
}
} else if (e.getSource() == workBut2) {
if (is2Ready) {
s = call2 + "号顾客正在办理业务。。。"
jl2.setText(s)
is2Ready = false
}
} else if (e.getSource() == workBut3) {
if (is3Ready) {
s = call3 + "号顾客正在办理业务。。。"
jl3.setText(s)
is3Ready = false
}
}
}
public boolean hasCustomers() {
if (now <total) {
return true
} else {
return false
}
}
public static void main(String[] args) {
new BankWaiting()
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)