問題

問11 次のJavaプログラムの説明及びプログラムを読んで、設問1、2に答えよ。
 (Javaプログラムで使用するAPIの説明は、問題冊子の末尾を参照してください。)

〔プログラムの説明〕

 試験の成績を管理するプログラムである。

 (1)クラスScoreManagerは、後述するクラスValueSontedMapを継承したクラスで、試験の成績を管理する。点数の高い順に学籍番号(英数字で構成される固定長の文字列)と点数を出力するメソッドprintをもつ。

 (2)クラスValueSortedMapは、キーと値の対応付けを値の昇順、又はコンストラクタで指定したコンパレータに従った順に保持する。キーと値の対応付けをキーの昇順、又はコンパレータに従った順に保持するクラスTreeMapを利用している。主なメソッドは次のとおりである。

public V put(K kev,V value)
  keyにvalueを対応付けて登録する。key又はvalueがnullのときは例外NullPointerExceptionを投げる。keyが既に他の値と対応付けられていれば、その値をvalueで置き換え、置き換えられる前の値を返す。 keyに値が対応付けられていなければ、nullを返す。
public V get(K key)
  keyに対応付けられた値を返す。 key と値の対応付けがなければ、nullを返す。
public V remove(K key)
  keyと値の対応付けを削除し、対応付けられていた値を返す。keyと値の対応付けがなければ、nullを返す。
public Iterator〈K〉iterator()
  対応付けられた値の昇順、又はコンストラクタで指定したコンパレータに従った順に、キーを返すための反復子を返す。

 フィールドmapは、キーと値の対応付けを保持する。

 フィールドreverseMapは、値にキーを対応付けて保持する。異なるキーに同じ値が対応付けられることがあるので、値に対応付けられるのはキーのリストである。

(3)クラスScoreManagerTesterは、成績管理プログラムのテストプログラムである。メソッドmainの実行結果を、図1に示す。

図1 メソッドmainの実行結果
図1 メソッドmainの実行結果

〔プログラム1〕

プログラム1
[画像のクリックで拡大表示]

〔プログラム2〕

プログラム2
[画像のクリックで拡大表示]

〔プログラム3〕

プログラム3
[画像のクリックで拡大表示]