用Comparable接口,然后用要排序的类来重写Comparable的compareTo函数
直接上栗子
按照总成绩排序输出;
实现接口:
public class std implements Comparable<std> {
String name;
int shu;
int hua;
int wu;
int sum;
public std(String a,int b ,int c,int d)
{
name=a;
shu=b;
hua=c;
wu=d;
sum=b+c+d;
}
public std(){}
public void show()
{
System.out.println(name+"\t"+shu+"\t"+hua+"\t"+wu+"\t"+sum);
}
@Override
public int compareTo(std a) {
// TODO Auto-generated method stub
if(sum>a.sum)//目前是是降序; 升序则 if(sum<a.sum)
return 1; // return -1;
return 0; // return 0;
}
}
测试主函数
import java.util.Arrays;
import java.util.Scanner;
public class pp {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner cin=new Scanner (System.in);
std a[]=new std[10];
String aa;int b,c,d;
for(int i=0;i<2;i++)
{
aa=cin.next();
b=cin.nextInt();
c=cin.nextInt();
d=cin.nextInt();
a[i]=new std(aa,b,c,d);
}
Arrays.sort(a,0,2);
for(int i=0;i<2;i++)
{
a[i].show();
}
cin.close();
}
}
还有一种就是用Compartor接口,个人感觉前者好用,但坏处是?sort被固定了,只能为这一个结构体排序。
|