【P1223 排队接水】【Java】【通过改写Comparator类中的compare方法实现对引用数组的排序】

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);

猜你喜欢

转载自blog.csdn.net/m0_57937908/article/details/120925489