【Java】Comparatorインタフェースのcompareメソッドの動きがわかりません
Q&A
Closed
初めての投稿です。
(誤字脱字、至らない点があるかもしれませんがよろしくお願いします。)
Java Silver SE 11 某問題集のコードの動きが分かりません
不明点
・Sampleクラスのsuper()はどこを指しているのか
・Mainクラスのsortメソッドの動き
・SampleComparatorクラスのcomparaメソッドの呼び出し
以下コードの答えは「CBA」と表示されると解説にあります。
public class Sample {
private int id;
private String name;
public Sample(int id, String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
import java.util.Comparator;
public class SampleComparator implements Comparator<Sample> {
@Override
public int compare(Sample s1, Sample s2) {
if (s1.getId() < s2.getId()) {
return 1;
}
if (s2.getId() < s1.getId()) {
return -1;
}
return 0;
}
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
Sample[] samples = {
new Sample(2, "B"),
new Sample(3, "C"),
new Sample(1, "A")
};
List<Sample> list = new ArrayList<Sample>(Arrays.asList(samples));
list.sort(new SampleComparator());
for (Sample s : list) {
System.out.println(s.getName());
}
}
}
よろしくお願いします。