package myPackage;
import java.util.Scanner;
import java.util.Arrays;
import java.util.Comparator;
class People{
int n;
double t;
People(int n,double t){
this.n=n;
this.t=t;
}
}
public class Main {
static double sum=0;
public static void main(String[]args) {
Scanner in=new Scanner(System.in);
int N=in.nextInt();
People[]p=new People[N];
for(int i=0;i<N;i++) {
p[i]=new People(i+1,in.nextDouble());
}
Comparator<People> comp = new Comparator<People>() {
@Override
public int compare(People o1, People o2) {
// TODO Auto-generated method stub
if(o1.t>o2.t) {
return 1;
}else if(o1.t<o2.t) {
return -1;
}
return 0;
}
};
Arrays.sort(p, comp);
for(int i=0;i<N;i++) {
System.out.print(p[i].n+" ");
for(int j=0;j<i;j++) {
sum+=p[j].t;
}
}
System.out.printf("\n%.2f",sum/N);
}
}
通过改写Comparator类中的compare方法实现对引用数组的排序步骤:
Ⅰ.创建Comparator类的对象:
Comparator<People> comp = new Comparator<People>() {
};
Ⅱ.改写Comparator类中的compare方法:
升序:
o1.x>o2.x:return 1
o1.x<o2.x:return -1
降序:
o1.x<o2.x:return 1
o1.x>o2.x:return -1
Comparator<People> comp = new Comparator<People>() {
@Override
public int compare(People o1, People o2) {
// TODO Auto-generated method stub
if(o1.t>o2.t) {
return 1;
}else if(o1.t<o2.t) {
return -1;
}
return 0;
}
};
Ⅲ.用创建的对象调用Arrays.sort方法:
Arrays.sort(p, comp);