平成24年春期午後問11

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
UUUさん  
(No.1)
https://www.fe-siken.com/kakomon/24_haru/pm11.html

まず、reverseMapの存在意義がわかりません

設問では、
・問1のdとe
・問2
がわからないので、解説をお願いします...

2021.01.23 22:52
関数従属さん 
FE ゴールドマイスター
(No.2)
>reverseMapの存在意義

reverseMapについては、試験の点数をキーにし、値として学籍番号のリストを持たせる事により
TreeMapを使用する事により試験の点数でソートができるようにしたものだと思います。
試験の点数の降順はコンパレータで指定されている
public int compare(Integer a) {
   return b.compareTo(a);
}
で指定されている部分になるかと思います。

reverseMapのイメージは以下の感じです
(90,(FE0002,FE0005))
(85,(FE0003,FE0001))

>問1のdとe

removeについては、map、および、reverseMapよりremoveする事になります。
まず、dでmapよりremoveします。
remove時に削除されたvalue(試験の点数)が取得されますので
List<K> keys = reverseMap.get(value)で削除された試験の点数の学籍番号のリストを取得し
keys.remove(key)で削除対象の学籍番号を削除します。
当該点数に所属する学籍番号がすべていなくなった場合(学籍番号のリストが空になった場合)は
当該試験の点数そのものもreverseMapより不要となりますので、
eにて削除します。

>問2
reverseMapにおける
(90,(FE0002,FE0005))
(85,(FE0003,FE0001))
の(FE0002,FE0005)とか(FE0003,FE0001)とかの部分がListとなっておりますが、
Javaプログラムで使用するAPIの説明によると、Listの場合だとソートする事ができません。
Setだと対応するTreeSetによりソートができるようになりますので、
「List を Set に変更し,ArrayList を TreeSet に変更する」
事になるかと思います。
2021.01.24 16:55

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop