猫狗队列问题

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