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の値でソートします。負の符号は、ソートが昇順であるか降順であるかに影響します。 –