9章2

Rmag Breaking News

このJavaのコードは、Sample オブジェクトのリストを特定の方法でソートするプログラムです。Sample クラスには id と name という2つのプライベート属性があり、SampleComparator クラスは Comparator<Sample> インターフェースを実装しており、2つの Sample オブジェクトを id 属性の値で比較しています。Main クラスの main メソッドでは、3つの Sample オブジェクトを含む配列を作成し、それをリストに変換しています。その後、Collections.sort() メソッドを使ってこのリストをソートし、ソートされたリストの各 name 属性を出力しています。

では、コードにコメントを加えて、各部分の動作を説明していきます。

// Sample クラス定義
public class Sample {
private int id; // オブジェクトのID
private String name; // オブジェクトの名前

// コンストラクタ
public Sample(int id, String name) {
this.id = id; // IDの初期化
this.name = name; // 名前の初期化
}

// IDを取得するメソッド
public int getId() {
return id;
}

// 名前を取得するメソッド
public String getName() {
return name;
}
}

// Sample オブジェクトを比較するためのComparator実装
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; // s1のIDがs2より小さい場合は1を返す(降順)
}
if (s2.getId() < s1.getId()) {
return 1; // s2のIDがs1より小さい場合は-1を返す(降順)
}
return 0; // IDが等しい場合は0を返す
}
}

// メインクラスとエントリーポイント
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {
public static void main(String[] args) {
// Sample オブジェクトの配列を初期化
Sample[] samples = {
new Sample(2, “B”), // IDが2のオブジェクト
new Sample(3, “C”), // IDが3のオブジェクト
new Sample(1, “A”) // IDが1のオブジェクト
};

// 配列からリストへの変換
List<Sample> list = new ArrayList<>(Arrays.asList(samples));

// SampleComparatorを使ってリストをソート
list.sort(new SampleComparator());

// ソートされたリストの各要素の名前を出力
for (Sample s : list) {
System.out.println(s.getName());
}
}
}

SampleComparator において、compare メソッドはIDが小さい方を後ろにするため、IDが大きいものから小さいものの順にソートされます。つまり、IDが3, 2, 1の順となります。それに対応する名前は “C”, “B”, “A” の順になりますので、答えはCです。

Leave a Reply

Your email address will not be published. Required fields are marked *