018-004-002
ハッシュコード:hashCodeメソッド実装
初級
問題説明
ハッシュコード:hashCodeメソッド実装
この問題では: Recipeクラスのhashcode()メソッドをオーバーライドし、レシピ名と調理時間からハッシュコード値を計算して標準出力に表示するプログラムを作成します。
学習目標: ハッシュコードを理解し、hashCodeメソッドを実装する
レシピクラスを作成し、レシピ名と調理時間からハッシュコード値を計算するhashCode()メソッドを実装します。ハッシュコードは、オブジェクトを高速に検索・比較するための整数値です。HashSetやHashMapなどのコレクションで、オブジェクトを効率的に管理するために使われます。
例1:同じ内容のレシピは同じハッシュコード
Recipe recipe1 = new Recipe("Curry", 30);
Recipe recipe2 = new Recipe("Curry", 30);
System.out.println(recipe1.hashCode()); // 2074474418
System.out.println(recipe2.hashCode()); // 2074474418(同じ値)
System.out.println(recipe1.equals(recipe2)); // true
```java
同じレシピ名と調理時間なら、別々に作成されたオブジェクトでも同じハッシュコード値を返します。これにより、HashSetなどで重複判定が正しく動作します。
### 例2:異なる内容のレシピは異なるハッシュコード
```java
Recipe curry = new Recipe("Curry", 30);
Recipe pasta = new Recipe("Pasta", 20);
System.out.println(curry.hashCode()); // 2074474418
System.out.println(pasta.hashCode()); // 78916396(異なる値)
System.out.println(curry.equals(pasta)); // false
```java
レシピ名または調理時間が異なれば、通常は異なるハッシュコード値が生成されます。これによりハッシュテーブルでの検索が効率化されます。
### 例3:HashSetでの重複排除
```java
Set<Recipe> recipes = new HashSet<>();
recipes.add(new Recipe("Curry", 30));
recipes.add(new Recipe("Curry", 30)); // 同じ内容なので追加されない
recipes.add(new Recipe("Pasta", 20));
System.out.println(recipes.size()); // 2(重複が排除される)
```java
HashSetは、hashCode()とequals()を使って重複を判定します。同じハッシュコードで、かつequals()がtrueなら重複と判定されます。
## 入力
1行目: レシピ名
2行目: 調理時間(分)
## 出力
```java
=== Hash Code Calculation ===
Recipe: [レシピ名]
Cooking Time: [時間]分
━━━━━━━━━━━━━━━━
Hash Code: [ハッシュコード値]
テストケース例
※ 出力例はプログラミングの国際標準に準拠し英語で表示しています
正常系
入力:
Curry 30
期待される出力:
=== Hash Code Calculation === Recipe: Curry Cooking Time: 30 minutes ━━━━━━━━━━━━━━━━ Hash Code: 2029715544
正常系
入力:
Pasta 20
期待される出力:
=== Hash Code Calculation === Recipe: Pasta Cooking Time: 20 minutes ━━━━━━━━━━━━━━━━ Hash Code: -1911512250
正常系
入力:
Curry 30
期待される出力:
=== Hash Code Calculation === Recipe: Curry Cooking Time: 30 minutes ━━━━━━━━━━━━━━━━ Hash Code: 2029715544
正常系
入力:
Sushi 15
期待される出力:
=== Hash Code Calculation === Recipe: Sushi Cooking Time: 15 minutes ━━━━━━━━━━━━━━━━ Hash Code: -1807165666
あなたの解答
現在のモード:● 自分のコード
Recipe.java🔒
Solution.java🔒
2/6 ファイル147B
⚠️警告
- mainメソッドが見つかりません
9
1
2
3
4
5
›
⌄
import java.util.Objects;
import java.util.Scanner;
class Recipe {
}
0 B / 5 MB
残り 7 回実行可能
