您的位置:首页 > 编程语言 > Java开发

【Java】动物收容所

2015-07-13 16:01 399 查看
有家动物收容所只收容狗与猫,且严格遵守“先进先出”原则。在收养该收容所的动物时,收养人只能收养进入收容所时间最长的动物,或者,挑选猫或狗中收养时间最长的。

请创建适合这个系统的数据结构,实现各种操作方法,比如enqueue,dequeueAny, dequeDog, dequeueCat等,允许使用java内置的LinkedList数据结构

不能使用Queue类,Queue是接口,实例化接口要实例化接口的每个方法

分别实现两个queue存放dog和 cat,并用一个变量记录下每个动物进入队列的时间,需要收养时,则将时间最长的出队

import java.util.LinkedList;

public class shourongsuo {
public abstract class Animal {
//kinda timestamp to mark how long did the animal benn in the zoo
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; //time stamp

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();
}
}

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