質問編集履歴

3

変数名を変更

2020/03/16 15:32

投稿

etrisotoko777
etrisotoko777

スコア25

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  ```java
8
8
 
9
- Set<Hero> list = new HashSet<Hero>();
9
+ Set<Hero> Member = new HashSet<Hero>();
10
10
 
11
11
  Hero h1 = new Hero();
12
12
 
@@ -166,7 +166,7 @@
166
166
 
167
167
  public static void main(String[] args) {
168
168
 
169
- Set<Hero> list = new HashSet<Hero>();
169
+ Set<Hero> Member = new HashSet<Hero>();
170
170
 
171
171
  Hero h1 = new Hero();
172
172
 

2

誤字の修正

2020/03/16 15:32

投稿

etrisotoko777
etrisotoko777

スコア25

test CHANGED
File without changes
test CHANGED
@@ -70,7 +70,7 @@
70
70
 
71
71
 
72
72
 
73
- ##追記】自己解決法
73
+ ##追記】
74
74
 
75
75
  手元の参考書には
76
76
 

1

オーバーライドの内容と自己解決法

2020/03/11 14:47

投稿

etrisotoko777
etrisotoko777

スコア25

test CHANGED
File without changes
test CHANGED
@@ -46,9 +46,47 @@
46
46
 
47
47
 
48
48
 
49
+ オーバーライドの内容
50
+
51
+ ```java
52
+
53
+ @Override
54
+
55
+ public int hashCode() {
56
+
57
+ final int prime = 31;
58
+
59
+ int result = 1;
60
+
61
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
62
+
63
+ return result;
64
+
65
+ ```
66
+
67
+
68
+
49
69
  hashCode()メソッドのオーバーライドの有無で結果が変わるのはなぜでしょうか?
50
70
 
51
71
 
72
+
73
+ ##追記】自己解決法
74
+
75
+ 手元の参考書には
76
+
77
+ ハッシュ値の条件として
78
+
79
+ ・同じ(等価)インスタンスからは、必ず同じハッシュ値が得られること
80
+
81
+ ・異なるインスタンスからは、なるべくことなるハッシュ値が得られること
82
+
83
+
84
+
85
+ と書かれていました。
86
+
87
+ 変数名ではなく、参照先のアドレスからハッシュ値を生成しているのでしょうか。
88
+
89
+ そう考えるとオーバーライドによって結果が変わることに納得できます。
52
90
 
53
91
 
54
92