java 比较大小

如果是自己写了一个class 作数据类型需要比较大小则需implements Comparable 接口, 并在class 中重写compareTo()方法,例如:
public class A implements Comparable{
……
public A(double s){score=s;}
private double score;
/**
* @return the score
*/
public double getScore() {
return score;
}
………
@Override
public int compareTo(A o) {
int compare = 0;
double result = this.getScore()-o.getScore();
if (result > 0){
compare =1;
}
else if(result <1){
compare = -1;
}
return compare;
}
………………
}
然后在其他地方,就可以直接比较类型为A的对象大小或者排序:
/**
* @param args
*/
public static void main(String[] args) {
List
test= new ArrayList();
test.add(new A(2.1));
test.add(new A(33.1));
test.add(new A(2.189));
Collections.sort(test);
}
==============================================
也可重写已有的比较方法,新的class implements Comparator,并重写compare() 方法。下面的例子重写了整数比较方法,从而直接将PriorityQueue 变为maxHeap最大堆(其默认实现是minHeap最小堆):
public class MaxHeapComparator implements Comparator{
@Override
public int compare(Integer o1, Integer o2) {
if (o1 < o2) return 1;
else if (o1 == o2) return 0;
else return -1;
}
}
在其他程序里用最大堆:
maxHeapComparator = new MaxHeapComparator();
PriorityQueue maxHeap = new PriorityQueue(20, maxHeapComparator);
或者从大到小排序:
int[] testArray= {2,4,6,1,76,4,99};
Arrays.sort(testArray, maxHeapComparator);
Tags: 

延伸阅读

最新评论

发表评论