需求:
有一个People类,该类实例化的对象存放在对象数组中。
该类的属性有String name,int id。
请按id的大小对对象数组中的对象进行从小到大的排序。
第一种方法:用内部比较器比较
People类如下:
/*
* 为了该类的对象可以比较,实现Comparable接口,重写compareTo方法
* 这其实就定义了一个内部比较器(在要比较的对象所在类的内部)。
*/
public class People implements Comparable{
String name;
int id;
public People() {
}
public People(String name, int id) {
super();
this.name = name;
this.id = id;
}
//便于输出对象数组中对象的内容
public String toString() {
return "People:[name="+this.name+"\t id="+this.id+"]";
}
/*
* 后续在排序工具类中会用到这个方法
* 该方法中定义比较规则
*/
@Override
public int compareTo(Object o) {
People other=(People)o;
return this.id-other.id;
}
}
排序工具类:
public class ArrayUtil {
public static void sort(Object[] obj) {//属性从小到大排
/*
* 无论你传什么类型的对象数组进来,只要相应类实现了
* Comparable接口,就可以将传进来的对象数组强转成
* Comparable类型的对象数组
*
*/
Comparable [] other=(Comparable[])obj;
/*
* 以下使用的是冒泡排序,冒泡排序和快速排序别搞混
*/
for(int i=0;i<obj.length;i++) {
for(int j=0;j<obj.length-i-1;j++) {
/*
* 调用了People类的compareTo方法
* 该类实现了Comparable接口,重写了compareTo()方法
* 这儿运用了多态哦
*/
if(other[j].compareTo(other[j+1])>0) {