【Java】动物收容所

来源:互联网 发布:soma聊天软件好用吗 编辑:程序博客网 时间:2024/04/30 02:56

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

请创建适合这个系统的数据结构,实现各种操作方法,比如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 zooint 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 stamppublic 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();}}}



0 0
原创粉丝点击