实现一个猫狗队列
// 宠物类
public class Pet {
private String mType;
public Pet(String type) {
mType = type;
}
public String getType() {
return mType;
}
}
// 狗
public class Dog extends Pet {
public Dog(String type) {
super(type);
}
}
// 喵
public class Cat extends Pet {
public Cat(String type) {
super(type);
}
}
public class PetWithTimestamp {
private Pet mPet;
private long mTimestamp;
public PetWithTimestamp(Pet pet, long timestamp) {
mPet = pet;
mTimestamp = timestamp;
}
public Pet getPet() {
return mPet;
}
public long getTimestamp() {
return mTimestamp;
}
public String getType() {
return mPet.getType();
}
}
public class CatDogQueue {
private Queue<PetWithTimestamp> mCatQueue;
private Queue<PetWithTimestamp> mDogQueue;
public CatDogQueue() {
mCatQueue = new LinkedList<>();
mDogQueue = new LinkedList<>();
}
public void add(Pet pet) {
if (pet == null) {
throw new IllegalArgumentException("pet can't be null");
}
switch (pet.getType()) {
case "cat":
mCatQueue.add(new PetWithTimestamp(pet, System.currentTimeMillis()));
break;
case "dog":
mDogQueue.add(new PetWithTimestamp(pet, System.currentTimeMillis()));
break;
default:
break;
}
}
public Pet pollAll() {
if (!mCatQueue.isEmpty() && !mDogQueue.isEmpty()) {
if (mCatQueue.peek().getTimestamp() < mDogQueue.peek().getTimestamp()) {
return mCatQueue.poll().getPet();
} else {
return mDogQueue.poll().getPet();
}
} else if (!mCatQueue.isEmpty()) {
return mCatQueue.poll().getPet();
} else if (!mDogQueue.isEmpty()) {
return mDogQueue.poll().getPet();
} else {
throw new IllegalStateException("queue is empty!");
}
}
public Cat pollCat() {
if (!mCatQueue.isEmpty()) {
return (Cat) mCatQueue.poll().getPet();
} else {
throw new IllegalStateException("dog queue is empty!");
}
}
public Dog pollDog() {
if (!mDogQueue.isEmpty()) {
return (Dog) mDogQueue.poll().getPet();
} else {
throw new IllegalStateException("dog queue is empty!");
}
}
public boolean isEmpty() {
return mCatQueue.isEmpty() && mCatQueue.isEmpty();
}
public boolean isCatQueueEmpty() {
return mCatQueue.isEmpty();
}
public boolean isDogQueueEmpty() {
return mDogQueue.isEmpty();
}
}
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有