您的位置:首页 > 其它

猫狗队列问题

2017-10-17 10:15 162 查看
实现猫狗队列问题:

import java.util.Queue;
import java.util.LinkedList;
//实现猫狗队列的问题
public class CatDogQueue{

//宠物 类
public static class Pet{
private String type;

public Pet(String type)
{
this.type=type;
}
public String getPetType()
{
return this.type;
}
}
//狗 类
public static class Dog extends Pet
{
public Dog()
{
super("dog");
}
}
// 猫 类
public static class Cat extends Pet
{
public Cat()
{
super("cat");
}
}
//统计宠物进入队列的数量和种类
public static class PetEnterQueue{
private Pet pet;
private long count;

public PetEnterQueue(Pet pet, long count) {
this.pet = pet;
this.count = count;
}

public Pet getPet() {
return this.pet;
}

public long getCount() {
return this.count;
}

public String getEnterPetType() {
return this.pet.getPetType();
}
}

//猫狗队列的具体实现
public static class DogCatQueue{

private Queue<PetEnterQueue> dogQ;
private Queue<PetEnterQueue> catQ;
private long count;

public DogCatQueue() {
this.dogQ = new LinkedList<PetEnterQueue>();
this.catQ = new LinkedList<PetEnterQueue>();
this.count = 0;
}
//向队列中添加猫狗类
public void add(Pet pet) {
if (pet.getPetType().equals("dog")) {
this.dogQ.add(new PetEnterQueue(pet, this.count++));
} else if (pet.getPetType().equals("cat")) {
this.catQ.add(new PetEnterQueue(pet, this.count++));
} else {
throw new RuntimeException("err, not dog or cat");
}
}
//依次弹出所有的猫狗类
public Pet pollAll() {
if (!this.dogQ.isEmpty() && !this.catQ.isEmpty()) {
if (this.dogQ.peek().getCount() < this.catQ.peek().getCount()) {
return this.dogQ.poll().getPet();
} else {
return this.catQ.poll().getPet();
}
} else if (!this.dogQ.isEmpty()) {
return this.dogQ.poll().getPet();
} else if (!this.catQ.isEmpty()) {
return this.catQ.poll().getPet();
} else {
throw new RuntimeException("err, queue is empty!");
}
}
//依次弹出所有的狗类
public Dog pollDog() {
if (!this.isDogQueueEmpty()) {
return (Dog) this.dogQ.poll().getPet();
} else {
throw new RuntimeException("Dog queue is empty!");
}
}
//依次弹出所有的猫类
public Cat pollCat() {
if (!this.isCatQueueEmpty()) {
return (Cat) this.catQ.poll().getPet();
} else
throw new RuntimeException("Cat queue is empty!");
}
//查看队列是否为空
public boolean isEmpty() {
return this.dogQ.isEmpty() && this.catQ.isEmpty();
}
//查看狗队列是否为空
public boolean isDogQueueEmpty() {
return this.dogQ.isEmpty();
}
//查看猫队列是否为空
public boolean isCatQueueEmpty() {
return this.catQ.isEmpty();
}

}

public static void main(String[] args)
{
DogCatQueue dogcat=new DogCatQueue();
dogcat.add(new Dog());
dogcat.add(new Cat());
dogcat.add(new Dog());

while(!dogcat.isCatQueueEmpty())
{
System.out.println(dogcat.pollCat().getPetType());
}

while(!dogcat.isDogQueueEmpty())
{
System.out.println(dogcat.pollDog().getPetType());
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string class 猫狗队列