【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();
}
}
}
请创建适合这个系统的数据结构,实现各种操作方法,比如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();
}
}
}
相关文章推荐
- 通过maven构建一个java项目
- java.net.InetAddress.getLocalHost(InetAddress.java:1473) java.net.Unknown
- JAVA更改软件标题栏默认图标的方法
- java初始化顺序
- Java正则表达式
- eclipse 打断点不进入debug模式
- JAVA之Set
- eclipse安装和JDK的配置
- java URL和URLConnection的例子
- Spring 注解拦截器使用详解
- java 多线程
- Struts2的类型转换器
- Java内部类的使用小结
- Java:从字符串文本中获得数字
- java从控制台输入
- java反射机制
- java web页面 base
- BeanFactory和FactoryBean
- java中有三种移位运算符
- 【java】使用POI读取excel文件内容