- PR -

ハッシュコードの契約に準拠

1
投稿者投稿内容
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2004-03-16 21:12
IDGの直前必修問題集にて、SJC-Pの対策をしているんですけど
ハッシュコードの契約に準拠しているかどうかっていう問題で
public int test(){
return (int)Math.random()
}
とあります。

それで答えは、準拠している
なんですけど、
これって正しいのですか?

同じオブジェクトに対して、複数回実行したら
同じ答えにならないし。
ぽん
大ベテラン
会議室デビュー日: 2003/05/13
投稿数: 157
投稿日時: 2004-03-16 21:27
実行してみました?毎回同じ値が帰ってきますよ。
(ひっかけですね)

コード:

public int hashCode() {
return (int)Math.random();
}



[ メッセージ編集済み 編集者: ぽん 編集日時 2004-03-16 21:28 ]
でゅうく
大ベテラン
会議室デビュー日: 2003/11/30
投稿数: 129
投稿日時: 2004-03-16 21:30
引用:

頭脳パンさんの書き込み (2004-03-16 21:12) より:
同じオブジェクトに対して、複数回実行したら
同じ答えにならないし。



Math#random() の戻り値は 「double の擬似乱数。範囲は、0.0 以上 1.0 未満」 ですので、int にキャストすると必ず 0 になります。
最も非効率に準拠していますね。

#しかし意地悪な問題ですね・・・。
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2004-03-17 06:56
ご返答ありがとうございます。
ちゃんと実行してから、書き込めばよかったです。
>int にキャストすると必ず 0 になります。
納得です。

一行一行ちゃんと読まねば!という教訓になりました。
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2004-03-17 10:41
引用:

Math#random() の戻り値は 「double の擬似乱数。範囲は、0.0 以上 1.0 未満」 ですので、int にキャストすると必ず 0 になります。
最も非効率に準拠していますね。

#しかし意地悪な問題ですね・・・。



こういうのを見ると、試験の存在意義(何のための試験?)を疑うんですが……。
SJC-Pの試験中にJavaDocとか見られるんですっけ?
#それとも、標準的なライブラリのインターフェースは全部覚えておけってことですか
ぽん
大ベテラン
会議室デビュー日: 2003/05/13
投稿数: 157
投稿日時: 2004-03-17 13:12
引用:

永井和彦さんの書き込み (2004-03-17 10:41) より:

SJC-Pの試験中にJavaDocとか見られるんですっけ?
#それとも、標準的なライブラリのインターフェースは全部覚えておけってことですか


試験中にJavaDocは見られませんね。
出題範囲に「java.lang.Math クラスの static メソッドの使用方法を説明する。」と書いてあるので、Mathクラスは丸暗記ですね。
(Mathクラスだけですけどね)
1

スキルアップ/キャリアアップ(JOB@IT)