有家动物收容所只收容狗与猫,且严格遵守“先进先出”原则。在收养该收容所的动物时,收养人只能收养进入收容所时间最长的动物,或者,挑选猫或狗中收养时间最长的。
请创建适合这个系统的数据结构,实现各种操作方法,比如enqueue,dequeueAny, dequeDog, dequeueCat等,允许使用java内置的LinkedList数据结构
不能使用Queue类,Queue是接口,实例化接口要实例化接口的每个方法
分别实现两个queue存放dog和 cat,并用一个变量记录下每个动物进入队列的时间,需要收养时,则将时间最长的出队
import java.util.LinkedList;
public class shourongsuo {
public abstract class Animal {
int order;
protected String name;
public Animal(String n) {
name = n;
}
public void setOrder(int ord) {
order = ord;
}
public int getOrder() {
return order;
}
public boolean isOlderThan(Animal a) {
return this.order < a.getOrder();
}
}
public class Dog extends Animal {
public Dog(String n) {
super(n);
}
}
public class Cat extends Animal {
public Cat(String n) {
super(n);
}
}
public class AnimalQueue {
LinkedList<Dog> dogs = new LinkedList<Dog> ();
LinkedList<Cat> cats = new LinkedList<Cat> ();
private int order = 0;
public void enqueue(Animal a) {
a.setOrder(order);
order++;
if ( a instanceof Dog) dogs.addLast((Dog)a);
else if (a instanceof Cat) cats.addLast((Cat)a);
}
public Animal dequeueAny() {
if (dogs.size() == 0) {
return dequeueCats();
}
else if (cats.size() == 0) {
return dequeueDogs();
}
Dog dog = dogs.peek();
Cat cat = cats.peek();
if ( dog.isOlderThan(cat) ) {
return dequeueDogs();
}
else {
return dequeueCats();
}
}
public Dog dequeueDogs() {
return dogs.poll();
}
public Cat dequeueCats() {
return cats.poll();
}
}
}