9章3

Rmag Breaking News

このJavaのコードスニペットは、Arrays.asListメソッドを使用して、Integerのリストを作成し、そのリストをソートしてからプリントアウトするものです。しかし、ソートするための具体的な方法が7行目で省略されています。選択肢A, B, C, Dはそれを補うためのラムダ式です。答えはDと指定されていますので、なぜDが正しい答えなのかを説明します。

Dのオプションでは、list.sort((a, b) -> -a.compareTo(b));というラムダ式を使っています。この式は2つの要素aとbを比較し、その結果に負の符号をつけています。compareToメソッドは、aがbより小さい場合は負の数、等しい場合は0、大きい場合は正の数を返します。その結果に負の符号をつけることで、通常の昇順の代わりに降順の比較を行うことができます。

したがって、このラムダ式をリストに適用すると、リストの要素は降順(大きいものから小さいものへ)にソートされます。つまり、元々のリスト[1, 2, 3]は[3, 2, 1]としてソートされるため、問題文の「降順にスコアをソートして」という要求を満たします。

それぞれの選択肢にコメントを加えて分かりやすくします:

A. list.sort((a, b) -> a.compareTo(b)); // 昇順にソートする
B. list.sort(() -> a.compareTo(b)); // 無効な構文、ラムダ式は2つの引数が必要
C. list.sort((a) -> a.compareTo(b)); // 無効な構文、ラムダ式は比較のために2つの引数が必要
D. list.sort((a, b) -> -a.compareTo(b)); // 降順にソートする(これが正解)

コメントを追加したコードスニペットは次のようになります:

import java.util.Arrays;
import java.util.List;

public class Main {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(new Integer[]{1, 2, 3});
// 以下のラムダ式によってリストを降順にソートする
list.sort((a, b) -> a.compareTo(b)); // 正しい降順のソート

for (Integer num : list) {
System.out.println(num); // ソートされたリストを出力する
}
}
}

ここでは、ソートの部分にラムダ式(選択肢D)を追加しています。これによりリストは降順にソートされ、3, 2, 1の順で出力されます。

Leave a Reply

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