問題
問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〕
〔プログラム2〕
〔プログラム3〕