回答編集履歴

3

テキスト修正

2018/01/13 08:55

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -92,9 +92,9 @@
92
92
 
93
93
 
94
94
 
95
- for ( Sound code: Sound.values()) {
95
+ for (Sound s: Sound.values()) {
96
96
 
97
- soundMap.put(code, code.value());
97
+ soundMap.put(s, s.value());
98
98
 
99
99
  }
100
100
 

2

テキスト修正

2018/01/13 08:55

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -40,7 +40,7 @@
40
40
 
41
41
 
42
42
 
43
- - `new EnumMap<Sound,Integer>(Sound.class);` は、 `new EnumMap<>(Sound.class);` と略せる。(java 1.6 以上)
43
+ - `new EnumMap<Sound,Integer>(Sound.class)` は、 `new EnumMap<>(Sound.class)` と略せる。(java 1.6 以上)
44
44
 
45
45
 
46
46
 

1

テキスト修正

2018/01/13 08:52

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -27,3 +27,109 @@
27
27
 
28
28
 
29
29
  以上参考になれば幸いです。
30
+
31
+
32
+
33
+ ---
34
+
35
+ **追記**
36
+
37
+
38
+
39
+ 以下の点で、リファクタしてみました。
40
+
41
+
42
+
43
+ - `new EnumMap<Sound,Integer>(Sound.class);` は、 `new EnumMap<>(Sound.class);` と略せる。(java 1.6 以上)
44
+
45
+
46
+
47
+ - enum にはメソッドを定義でき、また、ordinal()メソッドで先頭要素を 0 とする序数(配列のインデクスのようなもの)を得られる。
48
+
49
+
50
+
51
+ 上記を用いると、以下のように書けます。
52
+
53
+
54
+
55
+ ```java
56
+
57
+ import java.util.Map;
58
+
59
+ import java.util.EnumMap;
60
+
61
+ import java.util.Set;
62
+
63
+
64
+
65
+ class SoundMapList {
66
+
67
+
68
+
69
+ private enum Sound {
70
+
71
+ C,C_,D,D_,E,F,F_,G,G_,A,A_,B;
72
+
73
+
74
+
75
+ int value() {
76
+
77
+ return this.ordinal() + 1;
78
+
79
+ }
80
+
81
+ }
82
+
83
+
84
+
85
+ private Map<Sound,Integer> soundMap;
86
+
87
+
88
+
89
+ public SoundMapList() {
90
+
91
+ soundMap = new EnumMap<>(Sound.class);
92
+
93
+
94
+
95
+ for ( Sound code: Sound.values()) {
96
+
97
+ soundMap.put(code, code.value());
98
+
99
+ }
100
+
101
+ }
102
+
103
+
104
+
105
+ public Map<Sound,Integer> getMap() {
106
+
107
+ return soundMap;
108
+
109
+ }
110
+
111
+ }
112
+
113
+
114
+
115
+ public class Main {
116
+
117
+ public static void main(String[] args) {
118
+
119
+ SoundMapList soundMapList = new SoundMapList();
120
+
121
+ Set set = soundMapList.getMap().entrySet();
122
+
123
+ System.out.println(set);
124
+
125
+ }
126
+
127
+ }
128
+
129
+ ```
130
+
131
+ 上記を実行すると、以下が出力されます。
132
+
133
+
134
+
135
+ > [C=1, C_=2, D=3, D_=4, E=5, F=6, F_=7, G=8, G_=9, A=10, A_=11, B=12]