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
レシピ名または調理時間が異なれば、通常は異なるハッシュコード値が生成されます。これによりハッシュテーブルでの検索が効率化されます。

### 例3HashSetでの重複排除
```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メソッドが見つかりません
import java.util.Objects;
import java.util.Scanner;

class Recipe {
}
0 B / 5 MB

残り 7 回実行可能