Bitte informieren Sie mich über die Verwendung von compareTo()
Funktion in diesem Code. Was ist die Arbeit, die es leistet? Wenn wir die Funktion compareTo()
entfernen, wird ein Fehler ausgegeben.Paar Klassenimplementierung in Java
Ich weiß nicht, was ist die Verwendung von compareTo()
Funktion und wie es die Implementierung des Codes beeinflusst.
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 ;
}
}
}
Zunächst wird nach dem Wert von X sortiert. Wenn X-Werte gleich sind, wird nach dem Wert von Y sortiert. Das negative Vorzeichen beeinflusst wahrscheinlich, ob die Sortierung aufsteigend oder absteigend ist. –