package practice;
import java.util.LinkedList;
import java.util.Queue;
/**
* 实现一种狗猫队列的结构,要求如下: 用户可以调用add方法将cat类或dog类的
实例放入队列中; 用户可以调用pollAll方法,将队列中所有的实例按照进队列
的先后顺序依次弹出; 用户可以调用pollDog方法,将队列中dog类的实例按照
进队列的先后顺序依次弹出; 用户可以调用pollCat方法,将队列中cat类的实
例按照进队列的先后顺序依次弹出; 用户可以调用isEmpty方法,检查队列中是
否还有dog或cat的实例; 用户可以调用isDogEmpty方法,检查队列中是否有dog
类的实例; 用户可以调用isCatEmpty方法,检查队列中是否有cat类的实例
* @author Colin
*
*/
public class DogCatQueue {
public class Pet {
private String type;
public Pet(String type) {
this.type = type;
}
public String getPetType() {
return this.type;
}
}
public class Dog extends Pet {
public Dog() {
super("dog");
}
}
public class Cat extends Pet {
public Cat() {
super("cat");
}
}
public class PetEnter{
private Pet pet;
private long count;
public PetEnter(Pet pet, long count) {
super();
this.pet = pet;
this.count = count;
}
public Pet getPet() {
return pet;
}
public long getCount() {
return count;
}
}
private Queue<PetEnter> catQue;
private Queue<PetEnter> dogQue;
private long count=0;
public DogCatQueue(){
catQue=new LinkedList<DogCatQueue.PetEnter>();
dogQue=new LinkedList<DogCatQueue.PetEnter>();
}
public void add(Pet pet){
switch (pet.type) {
case "cat":
catQue.add(new PetEnter(pet, count++));
break;
case "dog":
dogQue.add(new PetEnter(pet, count++));
break;
default:
break;
}
}
public Pet pollAll(){
PetEnter catEnter = catQue.peek();
PetEnter dogEnter = dogQue.peek();
if(catQue.size()==0){
return dogQue.poll().pet;
}
if(dogQue.size()==0){
return catQue.poll().pet;
}
if(catEnter.getCount()<dogEnter.getCount()){
return catQue.poll().pet;
}else{
return dogQue.poll().pet;
}
}
public Pet pollDog(){
return dogQue.poll().pet;
}
public Pet pollCat(){
return catQue.poll().pet;
}
public boolean isEmpty(){
if(catQue.isEmpty()&&dogQue.isEmpty()){
return true;
}else{
return false;
}
}
public boolean isDogEmpty(){
if(dogQue.isEmpty()){
return true;
}else{
return false;
}
}
public boolean isCatEmpty(){
if(catQue.isEmpty()){
return true;
}else{
return false;
}
}
}
猫狗队列问题
猜你喜欢
转载自blog.csdn.net/qq_42667028/article/details/86668870
今日推荐
周排行