回答編集履歴
1
追記
answer
CHANGED
@@ -2,12 +2,13 @@
|
|
2
2
|
|
3
3
|
不要なお世話かも知れませんが、他の箇所も簡略化できるところを変えてます。
|
4
4
|
|
5
|
+
なお、これはJava5以降で使えるサンプルです。
|
5
6
|
```lang-java
|
6
7
|
// import java.util.*;
|
7
8
|
|
8
9
|
String line = "aaa bbb ddd bbb aaa aaa ccc ddd bbb";
|
9
10
|
String[] tokens = line.split(" ");
|
10
|
-
LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
|
11
|
+
LinkedHashMap<String, Integer> map = new LinkedHashMap<String, Integer>();
|
11
12
|
for (String token : tokens) {
|
12
13
|
if (map.containsKey(token)) {
|
13
14
|
map.put(token, map.get(token) + 1);
|
@@ -18,4 +19,18 @@
|
|
18
19
|
for (Entry<String, Integer> entry : map.entrySet()) {
|
19
20
|
System.out.printf("%s %d%n", entry.getKey(), entry.getValue());
|
20
21
|
}
|
21
|
-
```
|
22
|
+
```
|
23
|
+
|
24
|
+
|
25
|
+
Java8でStreamとラムダ式を使うと、さらに簡潔に書けます。
|
26
|
+
|
27
|
+
```lang-java
|
28
|
+
// import java.util.*;
|
29
|
+
// import java.util.stream.*;
|
30
|
+
|
31
|
+
String line = "aaa bbb ddd bbb aaa aaa ccc ddd bbb";
|
32
|
+
String[] tokens = line.split(" ");
|
33
|
+
Map<String, Integer> map = Stream.of(tokens)
|
34
|
+
.collect(Collectors.toMap(k -> k, v -> 1, (v1, v2) -> v1 + v2, LinkedHashMap::new));
|
35
|
+
map.entrySet().forEach(x -> System.out.printf("%s %d%n", x.getKey(), x.getValue()));
|
36
|
+
```
|