Java学习笔记 - 比较器Comparator

java中有两个比较器,ComparableComparator,都可以实现对Collection的比较

两者区别如下:

  1. Comparable
    1. 是在集合内部定义的方法实现的排序;
    2. 实现java.lang.Comparable接口,使你自己定义的类具备比较能力,这个接口只有一个方法compareTo
  2. Comparator
    1. 是在集合外部实现的排序
    2. 定义一个单独的类去实现Comparator接口,重写其中的compare方法

以上区别对代码直白的影响是,如果你希望写一个公用的比较方法,适用于多个类,就用Comparator

如果不希望破坏类本身的功能结构,但是希望对其排序,那就单独拎出来写个比较方法,用Comparator

反之用Coparable


Comparable较简单,这里不再举例。以下是Comparator的代码示例。


package testJa;
import java.util.*;

public class ComparatorT implements Comparator{ //继承Comparator
	@Override
	public int compare(Object o1,Object o2){
		int k1 = ((dataObj)o1).value;  //指定比较类中的元素,对于不同的结构体,此处可按情况更改。这里适用于"dataObj"
		int k2 = ((dataObj)o2).value;
		if (k1 > k2){
			return 1; //大于时返回1,小于时返回-1,表示正序排列;反过来是反序排列: 比较规则。
		}
		else{
			return -1;
		}
	}
	public static void main(String [] args){  //测试函数,使用时可忽略
		int len = 10, max = 20, i=0;
		dataObj dos[] = new dataObj[len];
		for(i=0;iArrays.sort(dos, new ComparatorT()); //使用Arrays.sort来排序,第一参数是待排序列,第二参数就是重写的比较函数
	}
}


dataObj结构体如下:

package testJa;

public class dataObj{
	public int value;
	public String source;
	public dataObj(int value, String source){
		this.value = value;
		this.source = source;
	}
}


END

你可能感兴趣的:(Java,算法,测试方法)