基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成18年 秋期 基本情報技術者 午後 問08
問08   Java

 次の Java プログラムの説明及びプログラムを読んで,設問に答えよ。

( Java プログラムで使用する API の説明は,この冊子の末尾を参照してください。)

〔プログラムの説明〕

 クラス UniqueMap は,キーと値を1対1に対応付けて保持する。 例えば,乗物の乗客(キー)と座席(値)との間に着席という関連があるとき, 一つの座席には多くても1人の乗客だけが座り,1人の乗客は一つの席にしか座らない。 クラス UniqueMap はこのような2種類のオブジェクトを,一方をキー, 他方を値として1対1に対応させるクラスであり,次のメソッドをもつ。

public V put(K key, V value)

 キー( key )と値( value )を1対1に対応付けて登録する。 key 又 は valueが null ならば,NullPointerException を投げる。 また,value が既にほかのキーと対応付けられていれば,IllegalArgumentException を投げる。

 key が既にほかの値と対応付けられていれば,その値を value で置き換え, 置き換えられる前の値を返す。 key に値が対応付けられていなければ,null を返す。

public V get(K key)

 キー( key )に対応付けられた値を返す。key と値の対応付けがなければ,

null を返す。

public V remove(K key)

 キー( key )と値の対応付けを削除し,対応付けられていた値を返す。 key と値の対応付けがなければ,null を返す。

public void putForce(K key, V value)

 キー( key )と値( value )を1対1に対応付けて登録する。 value が既にほかのキーと対応付けられていれば,その対応を削除したうえで登録する。 戻り値はない。その他の仕様は,メソッド put と同一である。

〔プログラム〕

import java.util.Map;
import java.util.HashMap;
public class UniqueMap<K, V> {   // K はキーのクラス,V は値のクラス。
   // キーと値を対応させて記憶する。
   private Map<K, V> map = new HashMap<K, V>();
   // 値からキーを取り出せるようにする。
   private Map<V, K> reverse = new HashMap<V, K>();
   public V put(K key, V value) {
      if ()
         throw new NullPointerException();
      if (reverse.containsKey(value))
         throw new IllegalArgumentException();
      reverse.remove(map.get(key));
      reverse.put();
      return map.put(key, value);
   }
   public V get(K key) {
      return map.get(key);
   }
   public V remove(K key) {
      V value = map.remove(key);
      reverse.remove(value);
      return value;
   }
   public void putForce(K key, V value) {
      // value がほかのキーと対応付けられていれば,その対応付けを削除する。
      // value に対応するキーの存在の有無をチェックする必要はない。
      map.remove();
      (key, value);
   }
}

設問 プログラム中の に入れる正しい答えを, 解答群の中から選べ。

a に関する解答群

ア key == null || value == null

イ key == null && value == null

ウ key != null || value != null

エ key != null && value != null

b に関する解答群

ア key, key      イ key, value

ウ value, key     エ value, value

c に関する解答群

ア key              イ reverse.get(value)

ウ reverse.put(value, key)    エ reverse.remove(value)

d に関する解答群

ア map.put      イ put

ウ putForce     エ reverse.put

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます

解答 d ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]