-2
请简要介绍一下在此代码中使用compareTo()
函数的功能。它正在执行什么工作。如果我们删除compareTo()
函数,它会给出错误。Java中的类对象实现
我不知道compareTo()
函数的用法,以及它如何影响代码的执行。
import java.util.ArrayList;
import java.util.Collections;
import java.util.PriorityQueue;
import java.util.Scanner;
/**
*
* @author rajat
*/
public class ImplementPair {
public static int mod = (int) (1e9+7);
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
int n=in.nextInt();
int k=in.nextInt();
PriorityQueue<Pair> pq=new PriorityQueue<>();
for(int i=0;i<n;i++){
int x=in.nextInt();
pq.add(new Pair(x, i+1));
System.out.println("prior "+pq);
}
for(int i=0;i<k;i++){
Pair p=pq.poll();
System.out.println("prior "+pq);
pq.add(new Pair(p.x-1, p.y));
System.out.println("prior "+pq);
}
}
static class Pair implements Comparable<Pair>{
long x,y,i;
Pair (long x,long y){
this.x=x;
this.y=y;
}
public int compareTo(Pair o) {
if(this.x!=o.x)
{
System.out.println(-Long.compare(this.x,o.x));
return -Long.compare(this.x,o.x);
}
else
return Long.compare(this.y,o.y);
//return 0;
}
@Override
public String toString() {
return x + " " + y ;
}
}
}
起初它按X的值排序。然后如果X值相等,它按Y的值排序。负号可能影响排序是升序还是降序。 –