質問編集履歴
1
タイトルをかえました
test
CHANGED
File without changes
|
test
CHANGED
@@ -15,163 +15,3 @@
|
|
15
15
|
「\s+」1つ以上のスペースの正規表現というのは検索できたのですが、
|
16
16
|
|
17
17
|
これ全体で何を指しているのかわかりません…(わかり次第追記はしていくつもりです)
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
### 該当のソースコード
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
```java
|
28
|
-
|
29
|
-
package practice.test20160812;
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
import java.io.BufferedReader;
|
34
|
-
|
35
|
-
import java.io.FileNotFoundException;
|
36
|
-
|
37
|
-
import java.io.FileReader;
|
38
|
-
|
39
|
-
import java.io.IOException;
|
40
|
-
|
41
|
-
import java.util.ArrayList;
|
42
|
-
|
43
|
-
import java.util.Collections;
|
44
|
-
|
45
|
-
import java.util.HashMap;
|
46
|
-
|
47
|
-
import java.util.List;
|
48
|
-
|
49
|
-
import java.util.Map;
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
public class Accumulate {
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
private static final String FILE_PATH = "resource\RAMBLES_IN_FLORIDA_PART_1.txt";
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
private static final String SEPARATOR = "(\s+?|\.|,|;)";
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
public static void main(String[] args) {
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
// 集計
|
70
|
-
|
71
|
-
Map<String, Integer> map = new HashMap<>();
|
72
|
-
|
73
|
-
try (FileReader fr = new FileReader(FILE_PATH);
|
74
|
-
|
75
|
-
BufferedReader br = new BufferedReader(fr)){
|
76
|
-
|
77
|
-
String line;
|
78
|
-
|
79
|
-
while ((line = br.readLine()) != null) {
|
80
|
-
|
81
|
-
String[] words = line.split(SEPARATOR);
|
82
|
-
|
83
|
-
for (String word : words) {
|
84
|
-
|
85
|
-
if (!word.isEmpty()) {
|
86
|
-
|
87
|
-
if (map.containsKey(word)) {
|
88
|
-
|
89
|
-
int count = map.get(word) + 1;
|
90
|
-
|
91
|
-
map.put(word, count);
|
92
|
-
|
93
|
-
} else {
|
94
|
-
|
95
|
-
map.put(word, 1);
|
96
|
-
|
97
|
-
}
|
98
|
-
|
99
|
-
}
|
100
|
-
|
101
|
-
}
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
}
|
106
|
-
|
107
|
-
} catch (FileNotFoundException e) {
|
108
|
-
|
109
|
-
System.out.println("ファイルが見つかりませんでした。");
|
110
|
-
|
111
|
-
} catch (IOException e) {
|
112
|
-
|
113
|
-
System.out.println("読み取りに失敗しました。");
|
114
|
-
|
115
|
-
}
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
// 出現数で降順に並べ替え、つづりの長さ最大値取得
|
120
|
-
|
121
|
-
List<String> list = new ArrayList<>();
|
122
|
-
|
123
|
-
int maxLengthOfSpelling = 0;
|
124
|
-
|
125
|
-
for (String key : map.keySet()) {
|
126
|
-
|
127
|
-
list.add(key);
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
if (maxLengthOfSpelling < key.length()) {
|
132
|
-
|
133
|
-
maxLengthOfSpelling = key.length();
|
134
|
-
|
135
|
-
}
|
136
|
-
|
137
|
-
}
|
138
|
-
|
139
|
-
Collections.sort(list, (o1, o2) -> {
|
140
|
-
|
141
|
-
return - map.get(o1) + map.get(o2);
|
142
|
-
|
143
|
-
});
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
// 上位10件出力
|
148
|
-
|
149
|
-
System.out.println("出現回数トップ10");
|
150
|
-
|
151
|
-
String format = "%-" + maxLengthOfSpelling + "s: %3d";
|
152
|
-
|
153
|
-
for (String word : list) {
|
154
|
-
|
155
|
-
int count = map.get(word);
|
156
|
-
|
157
|
-
if (10 <= count) {
|
158
|
-
|
159
|
-
System.out.printf(format, word, count);
|
160
|
-
|
161
|
-
System.out.println();
|
162
|
-
|
163
|
-
}
|
164
|
-
|
165
|
-
}
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
}
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
}
|
176
|
-
|
177
|
-
```
|