读书人

Comparable接口 兑现类的自动排序

发布时间: 2012-10-21 09:00:08 作者: rapoo

Comparable接口 实现类的自动排序

public class Duck implements Comparable {//实现了comparable接口的对象可以使用Arrays.sort(object[])或者Collections.sort(list)进行排序;private String name;private int weight;@Overridepublic int compareTo(Object o) { // a.comparableTo(b) 与0比较Duck oDuck = (Duck) o;if(this.weight > oDuck.weight){return 1;}else if(this.weight < oDuck.weight){return -1;}else {return 0;}}public Duck(String name, int weight) {super();this.name = name;this.weight = weight;}@Overridepublic String toString() {return name + "\tweight :  " + weight;}}



测试:

import java.lang.reflect.Array;import java.util.ArrayList;import java.util.Arrays;import java.util.Collection;import java.util.Collections;public class MainTest {public static void main(String[] args) {int numDuck = 3;Duck duck[] = new Duck[3];duck[0] = new Duck("duck1", 25);duck[1] = new Duck("duck2", 23);duck[2] = new Duck("duck3", 24);//Arrays.sort(duck);   //排序1?              ArrayList<Duck> list = new ArrayList<Duck>();   //排序2for (int i = 0; i < 3; i++) {list.add(duck[i]);}Collections.sort(list);for (int i = 0; i < 3; i++) {System.out.println(list.get(i));}}}

总结:接口comparable中使用了模板方法模式,在子类中我们只需要实现comparableTo() 方法定义排序的语法规则即可,至于具体的排序算法都由?模板方法(sort())来实现。???????? ====模板方法模式

读书人网 >编程

热点推荐