记得以前面试的时候碰到过一个面试题,大致是这个意思:有个对象,姑且叫Dog吧,Dog有身高,现在按Dog的身高进行排序
今天突然想起来,其实这个面试题,从表面看靠的是排序,有数据结构的内容,再深点看,是看你有多少经验,这个可以用
接口Comparable或者Comparator来解决,再深一点的层次,是考你的设计模式,这个用到的就是策略模式。对多态的一个很好的理解。
接口
public interface Comparable {
int compareTo(Object o);
}
首先是帮助类
@Override (实现comparable接口,这个comparable是java自带的)
public int compare(Object o1, Object o2) {
int i1 = (Integer)o1;
int i2 = (Integer)o2;
return (i1<i2?-1:(i1==i2?0:1));
}
或者
public static void sort(Object[] objects){
for (int i = objects.length; i > 0; i--) {
for (int j = 0; j < i-1; j++) {
if (((Comparable)objects[j]).compareTo((Comparable)objects[j+1]) == 1) {
swap(objects,j ,j+1);
}
}
}
}
private static void swap(Object[] objects, int i, int j) {
Object temp;
temp = objects[i];
objects[i] = objects[j];
objects[j] = temp;
}
Dog类 重写compareTo方法
@Override
public int compareTo(Object o) {
Dog dog = (Dog) o;
return (this.food < dog.food ?-1:(this.food == dog.food ?
0:1));
}
一点见解,高手指点