回答編集履歴

1

質問の意図がわからないのでファイナルアンサーを追加。よくわからない。

2019/10/28 09:07

投稿

xebme
xebme

スコア1083

test CHANGED
@@ -91,3 +91,51 @@
91
91
 
92
92
 
93
93
  質問の意図を取り違えていたらごめんなさい。
94
+
95
+
96
+
97
+ ### 追記します
98
+
99
+ **【ファイナルアンサー?】 peek()**
100
+
101
+ これでよいでしょうか。曲芸です。何の意味もありません。
102
+
103
+ - デバッグ用のpeek()を使って1以上の度数を表示
104
+
105
+ - peek()を使うために、MapをEntrySetにばらして、再びMapに組立て直す
106
+
107
+ (filter()などを使って新しいMapを作るのなら、EntrySetにばらす意味があります ... )
108
+
109
+
110
+
111
+
112
+
113
+ ```Java
114
+
115
+ Function<List<String>,Map<String, Long>> function =
116
+
117
+ x -> x.stream().collect(groupingBy(identity(), counting()))
118
+
119
+ .entrySet().stream()
120
+
121
+ .peek(e -> {if (e.getValue() > 1) System.out.println(e.getValue());})
122
+
123
+ .collect(toMap(Entry::getKey, Entry::getValue));
124
+
125
+
126
+
127
+ List<String> values = Arrays.asList("HND", "NRT", "KIX", "NGO", "NGO", "NGO", "NGO", "NGO");
128
+
129
+
130
+
131
+ Map<String, Long> result = function.apply(values);
132
+
133
+ System.out.println(result);
134
+
135
+
136
+
137
+ ```
138
+
139
+
140
+
141
+ 【ファイナルアンサー?】が正しいなら前の回答はとりさげます。関数インターフェイスのバリエーションを示しただけ。