我有一个名为queue的ArrayList,当我们到达结账时,我将客户存放在超市。当他们付款时,我删除了Arraylist的第一个元素(队列中的第一个客户),但我不知道如何告诉第二个,现在是第一个,继续付款。此外,该客户应该等待"事件"。
总而言之,我正在寻找像"信号"和"等待"。
以下是我的概要:
public class Customer{
public void checkItems(){
//Here goes the code for waiting his turn
//Here goes the code for paying items (already done)
//The next line is how I remove the client of the queue
Globals.checkoutList.get(currentCheckout).queue.remove(0);
Checkout.nextCustomer();
}
}
public class Checkout{
public static void nextCustomer(){
//Here I should tell the next customer that it is his turn
}
}
问候并感谢。
编辑:也许使用例外?对异常的帮助也将受到赞赏。答案 0 :(得分:2)
Customer
不应该从队列中移除自己,它是Checkout
的作业或Checkout
的控制实体。此外,当您删除列表中的第一个客户时,所有其他客户将自动“向上移动”,您只需要处理结账队列中的第一个元素。
答案 1 :(得分:1)
为什么不直接告诉列表的第一个索引?据我所知,你要签出的那个现在将在索引0处,因为它们将在移除时移位。
答案 2 :(得分:0)
观察者模式 1.1。定义
观察者模式定义了对象之间的一对多依赖关系,这样当一个对象改变状态时,它的所有依赖关系都会被自动通知和更新。
正在观看的对象称为主题。正在观察状态变化的对象被称为观察者或听众。</ p>
只是google JAVA OBSERVER的例子