回答編集履歴

1

追記

2015/09/20 04:11

投稿

argius
argius

スコア9390

test CHANGED
@@ -5,6 +5,8 @@
5
5
  不要なお世話かも知れませんが、他の箇所も簡略化できるところを変えてます。
6
6
 
7
7
 
8
+
9
+ なお、これはJava5以降で使えるサンプルです。
8
10
 
9
11
  ```lang-java
10
12
 
@@ -16,7 +18,7 @@
16
18
 
17
19
  String[] tokens = line.split(" ");
18
20
 
19
- LinkedHashMap<String, Integer> map = new LinkedHashMap<>();
21
+ LinkedHashMap<String, Integer> map = new LinkedHashMap<String, Integer>();
20
22
 
21
23
  for (String token : tokens) {
22
24
 
@@ -39,3 +41,33 @@
39
41
  }
40
42
 
41
43
  ```
44
+
45
+
46
+
47
+
48
+
49
+ Java8でStreamとラムダ式を使うと、さらに簡潔に書けます。
50
+
51
+
52
+
53
+ ```lang-java
54
+
55
+ // import java.util.*;
56
+
57
+ // import java.util.stream.*;
58
+
59
+
60
+
61
+ String line = "aaa bbb ddd bbb aaa aaa ccc ddd bbb";
62
+
63
+ String[] tokens = line.split(" ");
64
+
65
+ Map<String, Integer> map = Stream.of(tokens)
66
+
67
+ .collect(Collectors.toMap(k -> k, v -> 1, (v1, v2) -> v1 + v2, LinkedHashMap::new));
68
+
69
+ map.entrySet().forEach(x -> System.out.printf("%s %d%n", x.getKey(), x.getValue()));
70
+
71
+ ```
72
+
73
+