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