回答編集履歴

2

追記

2019/07/28 14:52

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -143,3 +143,7 @@
143
143
  }
144
144
 
145
145
  ```
146
+
147
+
148
+
149
+ もっとイケてる書き方をご存知の方は是非教えて下さい。

1

追記

2019/07/28 14:52

投稿

LouiS0616
LouiS0616

スコア35660

test CHANGED
@@ -47,3 +47,99 @@
47
47
  System.out.println(listOfList); // => [[0], [1], [2]]
48
48
 
49
49
  ```
50
+
51
+
52
+
53
+ 組んでみた
54
+
55
+ ---
56
+
57
+ 面白そうだったので、適宜ググりつつ書いてみました。
58
+
59
+ ```Java
60
+
61
+ import java.io.IOException;
62
+
63
+
64
+
65
+ import java.nio.file.Files;
66
+
67
+ import java.nio.file.Paths;
68
+
69
+
70
+
71
+ import java.util.HashMap;
72
+
73
+ import java.util.Map;
74
+
75
+
76
+
77
+
78
+
79
+ class Main {
80
+
81
+ public static void main(String[] args) throws IOException {
82
+
83
+ Map<Integer, Map<Integer, Integer>> map = new HashMap<>();
84
+
85
+
86
+
87
+
88
+
89
+ var path = Paths.get("./data.csv");
90
+
91
+ try(var in = Files.newBufferedReader(path)) {
92
+
93
+
94
+
95
+ while(true) {
96
+
97
+ var line = in.readLine();
98
+
99
+ if(line == null) break;
100
+
101
+
102
+
103
+ Integer question, score;
104
+
105
+ {
106
+
107
+ var fields = line.split(",");
108
+
109
+ assert fields.length == 5: "ill-formed CSV";
110
+
111
+
112
+
113
+ question = Integer.valueOf(fields[2]);
114
+
115
+ score = Integer.valueOf(fields[4]);
116
+
117
+ }
118
+
119
+
120
+
121
+ var inner = map.computeIfAbsent(
122
+
123
+ question, HashMap<Integer, Integer>::new
124
+
125
+ );
126
+
127
+ inner.merge(score, 1, (v1, v2) -> v1 + v2);
128
+
129
+ }
130
+
131
+ }
132
+
133
+
134
+
135
+ for(var key: map.keySet()) {
136
+
137
+ System.out.printf("%d, %s\n", key, map.get(key));
138
+
139
+ }
140
+
141
+ }
142
+
143
+ }
144
+
145
+ ```