前提
Java Silver資格の勉強中の者です。
黒本の問題を解いておりますが
理解できなかったのでこちらで質問させていただきます。
お手数ではございますが、ご教示いただけますと幸いです。
質問内容、不明点
本設問について、解説を読んでも全く理解できませんでした。
そのため質問の仕様がない為、問題に取り組んだ過程を記載させていただきます。
(どこが間違っているかわからない為)
間違っている点はもちろん、そもそも考え方がおかしい、などのご指摘も
大変勉強になりますので、遠慮なく指摘していただけますと幸いです。
~思考~ コードに紐づいてます。
①Sample型の配列 samples を宣言。
②Sample型のインスタンスを3つ生成
③List<Sample>型 list に、配列samplesを格納したArrayListを生成
④sortメソッドの引数(new SampleComparator)が何を言っているか、理解できてません。
このあと、SampleComparator.java内のcompareメソッドを見ますが
Sample s1,Sample s2がどれのことを指しているのか、わかっていません。
問題文とコード
問題文
次のプログラムをコンパイル、実行したときの結果として、
正しいものを選べ。
Sample.java
1public class Sample { 2 private int id; 3 private String name; 4 5 public Sample (int id, String name) { 6 super(); 7 this.id = id; 8 this.name = name; 9 } 10 public int getId() { 11 return id; 12 } 13 public String getName() { 14 return name; 15 } 16}
SampleComparator.java
1import java.util.Comparator; 2 3public class SampleComparator implements Comparator<Sample>{ 4 @Override 5 public int compare (Sample s1, Sample s2) { 6 if (s1.getId() < s2.getId()) { 7 return 1; 8 } 9 if (s2.getId() < s1.getId()) { 10 return -1; 11 } 12 return 0; 13 } 14}
Main.java
1import java.util.ArrayList; 2import java.util.Arrays; 3import java.util.List; 4 5public class Main { 6 public static void main(String[] args) { 7 Sample[] samples = { //思考1 8 new Sample(2, "B"), 9 new Sample(3, "C"), 10 new Sample(1, "A") //思考2 11 }; 12 List<Sample> list = new ArrayList<Sample>(Arrays.asList(samples)); //思考3 13 list.sort(new SampleComparator()); //思考4 14 for (Sample s : list) { 15 System.out.println(s.getName()); 16 } 17 } 18}
ご指導のほど、よろしくお願いします。
