题目
实现一种猫狗队列的结构,要求如下:
用户可以调用add方法将cat类或者dog类的实例放入队列中;
用户可以调用pollAll方法,将队列中所有的实例按照队列的先后顺序依次弹出;
用户可以调用pollDog方法,将队列中dog类的实例按照队列的先后顺序依次弹出;
用户可以调用pollCat方法,将队列中cat类的实例按照队列的先后顺序依次弹出;
用户可以调用isEmpty方法,检查队列中是否还有dog和cat的实例;
用户可以调用isDogEmpty方法,检查队列中是否还有do的实例;
用户可以调用isCatEmpty方法,检查队列中是否还有cat的实例。
给定猫狗类如下:
1 | public static class Pet{ |
思路
一开始我脑子一热,想用三个队列,分别存储dog,cat和All,但想了一下在pollCat或者Dog时,All的队列并不能确定其队头是否为该项。
如图所示
这让我们意识到需要为Dog和Cat做一个标识,便于分辨其先后顺序,这样只需要两个队列就可以完成该操作。由于我们无法修改Dog和Cat这两个类,所以我们自己封装一个类
下面来看下实际代码:
1 | public static class Pet{ |
代码很简单,在此就不做过多的解释了。