lambda最實用的例子(巨實用,能用到我們基本所有的方法的案例)
1.首先準備一個文件txt的。
1 阿會喃 雲南 男 190 225 74
2 伊籍 江陵 男 162 226 24
3 尹賞 天水 男 194 260 44
4 尹默 梓潼 男 183 239 15
5 于禁 陳留 男 159 221 78
6 衛瓘 晉陽 男 220 291 46
7 袁胤 汝南 男 163 199 14
8 袁熙 汝南 男 176 207 51
9 閻行 長安 男 159 222 84
10 閻柔 北平 男 168 227 57
11 袁術 宛 男 155 199 65
12 袁尚 汝南 男 179 207 75
13 袁紹 南皮 男 154 202 69
14 閻象 宛 男 158 199 27
15 袁譚 汝南 男 173 205 69
16 閻圃 漢中 男 163 231 25
17 王威 襄陽 男 163 208 70
18 王允 洛陽 男 137 192 6
19 王伉 成都 男 184 254 60
20 王粲 鄴 男 177 217 3
21 王修 北海 男 168 218 27
22 王肅 下邳 男 195 256 22
23 王浚 洛陽 男 206 285 73
24 王雙 天水 男 195 228 88
25 王昶 晉陽 男 188 259 64
26 王平 梓潼 男 192 248 79
27 王甫 江州 男 171 219 41
28 王門 北平 男 162 205 64
29 王凌 南皮 男 172 251 64
30 王累 成都 男 173 211 30
31 王朗 洛陽 男 162 228 35
32 溫恢 壽春 男 178 222 36
33 何晏 許昌 男 190 249 30
34 蒯越 襄陽 男 157 214 27
35 蒯良 襄陽 男 155 204 33
36 賈華 廬江 男 176 224 65
37 賈逵 洛陽 男 177 231 61
38 何儀 許昌 男 161 195 69
39 華歆 鄴 男 157 231 33
40 賈詡 洛陽 男 147 223 48
41 郭嘉 南皮 男 170 207 15
42 鄂煥 江州 男 196 251 82
43 郭汜 洛陽 男 146 197 76
44 樂就 宛 男 157 195 66
45 霍峻 武陵 男 178 217 66
46 郝昭 鄴 男 185 229 79
47 樂進 陳留 男 159 218 84
48 郭圖 許昌 男 155 205 50
49 郝萌 晉陽 男 156 197 67
50 郭攸之 宛 男 190 259 9
51 霍弋 江陵 男 207 270 69
52 郭淮 平原 男 187 255 78
53 夏侯威 陳留 男 204 253 73
54 夏侯淵 濮陽 男 162 219 91
55 夏侯恩 陳留 男 180 208 72
56 夏侯和 陳留 男 207 265 51
57 夏侯恵 陳留 男 206 242 44
58 夏侯玄 陳留 男 208 254 39
59 夏侯尚 新野 男 181 225 72
60 夏侯德 新野 男 178 218 73
61 夏侯惇 陳留 男 156 220 90
62 夏侯霸 陳留 男 202 262 84
63 夏侯楙 陳留 男 201 259 7
64 賈充 洛陽 男 217 282 31
65 何進 洛陽 男 135 189 40
66 華雄 洛陽 男 155 190 92
67 韓胤 宛 男 155 197 29
68 關羽 江夏 男 162 219 97
69 桓階 鄴 男 156 221 26
70 管亥 小沛 男 160 193 82
71 毌丘儉 鄴 男 202 255 74
72 韓玄 洛陽 男 163 208 33
73 韓浩 許昌 男 164 218 72
74 關興 江夏 男 199 234 86
75 關索 江夏 男 200 239 88
76 韓遂 長安 男 142 215 75
77 韓嵩 襄陽 男 154 210 15
78 關靖 北平 男 158 199 52
79 韓暹 南皮 男 159 196 66
80 闞澤 柴桑 男 182 243 49
81 韓忠 濮陽 男 151 184 67
82 韓當 柴桑 男 156 225 85
83 韓德 雲南 男 171 228 76
84 甘寧 建業 男 174 222 94
85 韓馥 鄴 男 149 193 3
86 關平 江夏 男 186 219 82
87 簡雍 江陵 男 164 225 32
88 顏良 南皮 男 160 200 94
89 魏延 長沙 男 175 234 92
90 麴義 北平 男 146 191 78
91 戲志才 許昌 男 157 194 7
92 魏續 晉陽 男 156 200 78
93 魏攸 北平 男 151 193 29
94 牛金 襄陽 男 173 226 79
95 牛輔 天水 男 159 192 60
96 姜維 天水 男 202 264 89
97 鞏志 武陵 男 178 242 53
98 橋蕤 洛陽 男 143 195 69
99 龔都 宛 男 164 200 70
100 許貢 吳 男 155 200 66
101 許靖 成都 男 152 222 5
102 許褚 北海 男 169 226 96
103 許攸 宛 男 155 204 21
104 紀靈 宛 男 155 199 83
105 金禕 許昌 男 177 218 38
106 金環三結 雲南 男 192 225 76
107 金旋 長安 男 155 208 68
108 虞翻 會稽 男 164 233 46
109 邢道榮 零陵 男 174 208 80
110 嚴顏 江州 男 151 222 83
111 嚴綱 北平 男 163 192 71
112 嚴畯 會稽 男 169 246 2
113 嚴政 許昌 男 151 189 55
114 嚴白虎 吳 男 142 196 70
115 嚴興 吳 男 145 196 78
116 吳懿 成都 男 165 237 73
117 黃蓋 柴桑 男 154 218 83
118 高幹 陳留 男 168 206 56
119 黃權 成都 男 167 240 59
120 高柔 鄴 男 174 263 43
121 高順 晉陽 男 162 198 86
122 高翔 梓潼 男 194 252 68
123 高升 許昌 男 145 184 73
124 侯成 晉陽 男 158 199 75
125 侯選 雲南 男 175 228 66
126 黃祖 江夏 男 148 208 66
127 公孫越 北平 男 160 192 72
128 公孫淵 襄平 男 205 238 70
129 公孫恭 襄平 男 174 238 17
130 公孫康 襄平 男 172 210 66
131 公孫瓚 北平 男 152 199 83
132 公孫續 北平 男 176 199 68
133 公孫度 襄平 男 154 204 71
134 公孫範 北平 男 158 199 69
135 黃忠 長沙 男 148 222 93
136 高定 江州 男 190 251 63
137 高沛 梓潼 男 170 212 61
138 皇甫嵩 陳留 男 132 195 61
139 孔融 北海 男 153 208 5
140 高覽 南皮 男 159 201 82
141 吳景 下邳 男 159 203 66
142 胡車兒 天水 男 164 206 82
143 胡軫 天水 男 146 190 74
144 兀突骨 雲南 男 186 225 86
145 胡班 江夏 男 179 233 55
146 吳班 成都 男 171 234 71
147 顧雍 吳 男 168 243 18
148 吳蘭 梓潼 男 170 218 80
149 蔡和 襄陽 男 166 208 50
150 蔡中 襄陽 男 168 208 54
151 蔡瑁 襄陽 男 160 208 70
152 笮融 下邳 男 161 195 69
153 司馬懿 陳留 男 179 251 63
154 司馬炎 洛陽 男 236 290 59
155 司馬師 洛陽 男 208 255 64
156 司馬昭 洛陽 男 211 265 57
157 司馬孚 陳留 男 180 272 37
158 司馬朗 陳留 男 171 217 21
159 沙摩柯 武陵 男 167 222 84
160 周昕 會稽 男 159 196 62
161 周昂 會稽 男 162 195 65
162 周旨 襄陽 男 233 295 85
163 周倉 江夏 男 164 219 84
164 周泰 廬江 男 171 225 91
165 周魴 廬江 男 200 240 41
166 周瑜 廬江 男 175 210 71
167 朱桓 建業 男 177 238 82
168 朱據 建業 男 190 246 57
169 祝融 雲南 女 193 246 85
170 朱儁 洛陽 男 149 195 65
171 朱然 廬江 男 182 249 69
172 朱治 吳 男 156 224 56
173 朱褒 江州 男 191 225 73
174 朱靈 汝南 男 170 236 73
175 荀彧 南皮 男 163 212 14
176 淳于瓊 洛陽 男 146 200 66
177 荀諶 許昌 男 164 208 25
178 荀攸 洛陽 男 157 214 26
179 蔣琬 零陵 男 188 246 34
180 鍾會 許昌 男 225 264 51
181 蔣幹 汝南 男 175 239 6
182 蔣義渠 薊 男 159 205 58
183 蔣欽 廬江 男 168 219 84
184 蔣濟 壽春 男 188 249 43
185 譙周 成都 男 201 270 3
186 焦觸 男 159 208 76
187 向寵 襄陽 男 195 240 61
188 鍾繇 洛陽 男 151 230 24
189 向朗 武陵 男 167 247 18
190 徐榮 長安 男 147 190 76
191 諸葛恪 吳 男 203 253 47
192 諸葛瑾 建業 男 174 241 34
193 諸葛均 桂陽 男 185 252 25
194 諸葛誕 下邳 男 206 258 72
195 諸葛亮 江陵 男 181 234 38
196 徐晃 晉陽 男 165 228 90
197 徐庶 鄴 男 178 232 64
198 徐盛 廬江 男 177 234 81
199 徐邈 薊 男 171 249 32
200 申儀 上庸 男 190 252 59
201 申耽 上庸 男 188 254 62
202 審配 鄴 男 156 204 60
203 辛毗 鄴 男 171 240 24
204 辛評 許昌 男 165 204 43
205 秦宓 成都 男 160 226 7
206 秦朗 晉陽 男 192 234 70
207 眭固 濮陽 男 151 199 71
208 鄒丹 北平 男 148 195 64
209 成宜 長安 男 168 211 72
210 成公英 長安 男 172 220 71
211 薛綜 會稽 男 187 243 16
212 單經 北平 男 156 199 68
213 全琮 建業 男 183 249 72
214 曹叡 鄴 男 205 239 52
215 曹休 濮陽 男 174 228 75
216 宋憲 晉陽 男 157 200 77
217 曹昂 陳留 男 175 197 67
218 曹洪 濮陽 男 169 232 81
219 曹純 濮陽 男 170 210 71
220 曹彰 北平 男 190 223 90
221 曹植 下邳 男 192 232 22
222 曹真 下邳 男 185 231 74
223 曹仁 濮陽 男 168 223 86
224 曹性 晉陽 男 163 198 74
225 曹操 陳留 男 155 220 72
226 曹衝 陳留 男 196 208 21
227 臧霸 壽春 男 165 231 75
228 曹丕 鄴 男 187 226 71
229 曹豹 下邳 男 151 196 69
230 沮授 鄴 男 156 201 35
231 蘇飛 柴桑 男 172 221 63
232 祖茂 下邳 男 155 190 71
233 孫桓 建業 男 197 228 73
234 孫堅 長沙 男 156 192 90
235 孫乾 江陵 男 165 215 33
236 孫權 建業 男 182 252 67
237 孫皎 柴桑 男 181 219 72
238 孫策 吳 男 175 200 92
239 孫韶 建業 男 188 241 79
240 孫靜 下邳 男 160 206 53
241 孫仲 濮陽 男 154 184 71
242 孫登 建業 男 209 241 37
243 孫瑜 柴桑 男 177 215 70
244 孫翊 吳 男 184 204 78
245 孫禮 南皮 男 180 250 81
246 太史慈 北海 男 166 209 93
247 帶來洞主 雲南 男 195 249 53
248 戴陵 雲南 男 199 258 75
249 朵思大王 雲南 男 186 225 59
250 譚雄 武陵 男 188 221 73
251 張允 襄陽 男 163 208 67
252 趙雲 江陵 男 168 229 96
253 張衛 漢中 男 172 215 66
254 張英 建業 男 154 195 74
255 張燕 濮陽 男 153 210 81
256 張橫 天水 男 178 211 70
257 張溫 建業 男 193 231 10
258 張闓 小沛 男 155 202 66
259 張角 平原 男 140 184 25
260 張既 洛陽 男 170 223 35
261 張嶷 成都 男 190 254 72
262 張勳 宛 男 156 206 68
263 張紘 建業 男 153 212 22
264 張郃 宛 男 167 231 89
265 趙弘 濮陽 男 156 184 72
266 張濟 天水 男 144 196 66
267 張繡 天水 男 154 207 73
268 張昭 建業 男 156 236 3
269 張松 成都 男 170 212 6
270 張任 成都 男 169 214 84
271 張悌 襄陽 男 236 280 43
272 張邈 濮陽 男 155 195 53
273 趙範 桂陽 男 168 218 21
274 張飛 江陵 男 167 221 98
275 張苞 江陵 男 198 229 87
276 張寶 濮陽 男 148 184 71
277 張曼成 宛 男 143 184 81
278 張楊 晉陽 男 151 195 70
279 張翼 成都 男 188 264 74
280 張遼 洛陽 男 169 222 92
281 張梁 許昌 男 153 184 80
282 趙累 江陵 男 183 219 43
283 張魯 漢中 男 163 237 26
284 陳橫 建業 男 161 195 63
285 陳應 桂陽 男 172 208 72
286 陳紀 柴桑 男 165 198 65
287 陳宮 陳留 男 154 198 55
288 陳矯 小沛 男 175 237 27
289 陳羣 陳留 男 167 235 14
290 陳珪 下邳 男 132 206 4
291 陳式 成都 男 191 230 71
292 陳震 零陵 男 170 235 46
293 陳泰 許昌 男 210 260 77
294 陳登 下邳 男 169 207 64
295 陳到 武陵 男 171 237 71
296 陳武 廬江 男 176 215 87
297 陳蘭 汝南 男 157 204 69
298 陳琳 鄴 男 160 217 9
299 程昱 濮陽 男 141 220 49
300 程遠志 南皮 男 145 184 74
301 程銀 長安 男 169 211 73
302 丁原 晉陽 男 137 190 76
303 程普 柴桑 男 151 216 79
304 丁奉 廬江 男 190 271 80
305 典韋 陳留 男 160 197 95
306 田楷 北平 男 154 199 65
307 田疇 薊 男 169 214 66
308 田豐 鄴 男 162 200 29
309 田豫 北平 男 171 252 72
310 董允 江州 男 192 246 28
311 董和 江州 男 168 219 34
312 鄧艾 新野 男 197 264 87
313 陶謙 小沛 男 132 194 27
314 鄧賢 成都 男 188 248 73
315 鄧芝 梓潼 男 182 251 52
316 董襲 廬江 男 169 215 85
317 董承 鄴 男 154 200 53
318 董昭 許昌 男 156 236 25
319 董卓 洛陽 男 139 192 87
320 董荼那 雲南 男 189 225 73
321 董旻 天水 男 149 192 60
322 鄧茂 南皮 男 147 184 75
323 杜畿 洛陽 男 163 224 32
324 杜預 長安 男 222 284 30
325 裴元紹 平原 男 169 200 65
326 馬玩 長安 男 170 211 74
327 馬休 西涼 男 178 211 73
328 波才 許昌 男 145 184 74
329 馬遵 天水 男 196 260 52
330 馬謖 江陵 男 190 228 67
331 馬岱 長安 男 183 246 85
332 馬忠 梓潼 男 187 249 72
333 馬超 長安 男 176 226 97
334 馬鐵 西涼 男 179 211 62
335 馬騰 西涼 男 149 211 80
336 馬良 江夏 男 187 222 23
337 潘浚 武陵 男 174 239 18
338 潘璋 廬江 男 177 222 80
339 樊稠 天水 男 149 192 73
340 樊能 會稽 男 158 195 61
341 潘鳳 鄴 男 155 190 77
342 費禕 江州 男 193 253 30
343 卑衍 襄平 男 196 238 66
344 費詩 成都 男 176 240 28
345 糜竺 桂陽 男 165 220 29
346 糜芳 長沙 男 169 222 61
347 費耀 天水 男 192 228 66
348 武安國 北海 男 156 190 83
349 馮習 江陵 男 182 222 71
350 傅士仁 長沙 男 182 222 63
351 傅僉 新野 男 216 263 85
352 傅巽 襄陽 男 162 230 13
353 文鴦 陳留 男 222 285 91
354 文欽 陳留 男 200 258 83
355 文丑 南皮 男 161 200 93
356 文聘 襄陽 男 178 237 82
357 卞喜 小沛 男 169 200 70
358 忙牙長 雲南 男 191 225 79
359 逢紀 南皮 男 153 202 21
360 龐義 梓潼 男 153 218 38
361 法正 江州 男 176 220 47
362 龐統 江陵 男 178 213 34
363 龐德 長安 男 170 219 94
364 鮑隆 桂陽 男 174 208 76
365 穆順 晉陽 男 157 190 77
366 木鹿大王 雲南 男 184 225 71
367 步騭 柴桑 男 177 247 51
368 滿寵 濮陽 男 170 242 64
369 毛玠 濮陽 男 161 216 39
370 孟獲 雲南 男 186 245 87
371 孟達 江州 男 172 228 73
372 孟優 雲南 男 190 251 68
373 俞涉 宛 男 158 190 79
374 楊懷 梓潼 男 167 212 68
375 雍闓 江州 男 188 225 75
376 楊儀 零陵 男 190 235 40
377 羊祜 濮陽 男 221 278 64
378 楊弘 宛 男 152 199 15
379 楊昂 漢中 男 172 215 72
380 楊醜 晉陽 男 159 199 65
381 楊修 下邳 男 175 219 4
382 楊秋 西涼 男 172 238 64
383 楊松 漢中 男 167 215 5
384 楊任 漢中 男 170 215 78
385 楊祚 襄平 男 202 256 61
386 楊柏 漢中 男 171 214 45
387 楊阜 天水 男 178 239 50
388 楊奉 洛陽 男 153 197 65
389 楊鋒 雲南 男 191 252 62
390 雷銅 梓潼 男 172 218 78
391 雷薄 汝南 男 157 206 70
392 李異 柴桑 男 187 222 77
393 李恢 江州 男 175 231 65
394 李傕 長安 男 148 198 72
395 陸抗 吳 男 226 274 63
396 陸績 會稽 男 187 219 7
397 陸遜 建業 男 183 245 69
398 李嚴 成都 男 172 234 84
399 李儒 洛陽 男 150 192 26
400 李肅 晉陽 男 156 192 69
401 李通 許昌 男 168 211 81
402 李典 許昌 男 174 216 77
403 李豐 濮陽 男 158 199 74
404 劉焉 成都 男 132 194 38
405 劉璝 成都 男 165 214 73
406 劉琦 濮陽 男 174 210 12
407 劉虞 薊 男 145 193 33
408 劉勳 下邳 男 163 216 63
409 劉賢 零陵 男 188 252 66
410 劉循 成都 男 184 239 46
411 劉璋 成都 男 162 219 5
412 劉諶 江陵 男 238 263 62
413 劉禪 江陵 男 207 271 5
414 劉琮 濮陽 男 195 208 22
415 劉度 零陵 男 168 214 23
416 劉巴 零陵 男 186 222 22
417 劉蚣 長沙 男 168 210 76
418 劉備 平原 男 161 223 77
419 劉表 襄陽 男 142 208 31
420 劉馥 下邳 男 164 208 49
421 劉闢 宛 男 145 201 72
422 劉封 江陵 男 188 220 79
423 劉曄 許昌 男 176 235 32
424 劉繇 壽春 男 156 198 67
425 呂威璜 南皮 男 159 200 63
426 廖化 江夏 男 170 264 76
427 梁興 雲南 男 169 211 65
428 梁習 壽春 男 168 230 40
429 梁緒 天水 男 198 260 62
430 凌操 吳 男 165 203 81
431 淩統 廬江 男 189 237 89
432 呂凱 雲南 男 194 227 30
433 呂虔 濮陽 男 173 238 70
434 呂曠 鄴 男 162 207 70
435 呂翔 鄴 男 164 207 71
436 呂岱 會稽 男 161 256 71
437 呂範 建業 男 169 228 63
438 呂布 洛陽 男 156 198 100
439 呂蒙 廬江 男 178 219 81
440 倫直 襄平 男 196 237 42
441 冷苞 成都 男 176 214 82
442 婁圭 洛陽 男 143 212 13
443 魯肅 柴桑 男 172 217 56
444 盧植 鄴 男 139 192 63
801 王異 天水 女 171 230 51
802 王元姬 下邳 女 217 268 37
803 郭氏 平原 女 184 235 4
804 夏侯氏 陳留 女 188 243 13
805 夏侯令女 陳留 女 207 257 53
806 何氏 洛陽 女 150 189 34
807 關銀屏 江夏 女 204 271 78
808 甘氏 小沛 女 175 210 3
809 黃月英 江陵 女 186 235 31
810 蔡琰 洛陽 女 168 224 11
811 蔡氏 襄陽 女 159 208 7
812 小喬 建業 女 178 210 12
813 徐氏 建業 女 183 232 16
814 辛憲英 鄴 女 191 269 28
815 甄氏 鄴 女 182 221 4
816 鄒氏 天水 女 165 197 6
817 曹節 女 190 260 2
818 孫氏 建業 女 188 250 22
819 孫尚香 江陵 女 193 222 86
820 孫魯育 女 204 250 8
821 孫魯班 建業 女 202 250 58
822 大喬 建業 女 177 210 11
823 張氏 女 207 237 61
824 張春華 陳留 女 189 234 49
825 貂蟬 洛陽 女 176 198 26
826 樊氏 桂陽 女 176 215 22
827 糜氏 下邳 女 176 208 6
828 卞氏 許昌 女 160 230 24
829 步練師 女 185 238 10
830 劉氏 洛陽 女 164 205 8
2.創建一個Hero的對象類
// 還有get和set方法,生成一下
public class Hero {
private int id;
private String name;
private String loc; // location
private String sex;
private int bir; // 生於
private int death; // 卒於
private int power; // 武力值
private int age;
public Hero(int id, String name, String loc, String sex, int bir, int death, int power) {
this.id = id;
this.name = name;
this.loc = loc;
this.sex = sex;
this.bir = bir;
this.death = death;
this.power = power;
this.age = death - bir;
}
public String ageRange(){
if(age > 0 && age <= 20){
return "0~20";
}else if (age >= 21 && age <= 40){
return "21~40";
}else if(age >= 41 && age <= 60){
return "41~60";
}else{
return "60以上";
}
}
3.編寫測試類
public class LambdaHero {
public static void main(String[] args) throws IOException {
// 1.讀取文件,將文件中的數據放在Hero對象中
List<Hero> listHero= Files.lines(Paths.get("heroes.txt")).map(line ->{
String[] split = line.split("\t");
return new Hero(
// id name loc bir death power age
Integer.parseInt(split[0]),
split[1],
split[2],
split[3],
Integer.parseInt(split[4]),
Integer.parseInt(split[5]),
Integer.parseInt(split[6])
);
}).collect(Collectors.toList());
//找出武力值前三的人名。 // [呂布, 張飛, 關羽]
System.out.println(listHero.stream().sorted((a, b) -> b.getPower() - a.getPower()).limit(3).map((hero) -> hero.getName()).collect(Collectors.toList()));
//3,找出武力前三並列的人
Set<Integer> set = listHero.stream().map((h) -> h.getPower()).distinct().
sorted((a, b) -> b - a).limit(3).collect(Collectors.toSet());
System.out.println(set); //[97, 98, 100]
List<String> collect = listHero.stream().filter(h -> set.contains(h.getPower())).map(hero -> hero.getName()).collect(Collectors.toList());
System.out.println(collect); //[關羽, 張飛, 馬超, 呂布]
//根據年齡段分組 0~20, 20~40 , 41~60 ,60以上
Map<String, List<Hero>> ageMap = listHero.stream().collect(Collectors.groupingBy((hero) -> hero.ageRange()));
ageMap.forEach((key,value) -> {
List<String> ageList = value.stream().map(hero -> hero.getName()).collect(Collectors.toList());
System.out.println(ageList);
});
//根據地區分組, 求個數
// 用的是下游收集器
Map<String, Long> locMap = listHero.stream().collect(Collectors.groupingBy(hero -> hero.getLoc(), Collectors.counting()));
locMap.forEach((key,value) ->{
System.out.println("地區: "+key+ "\t "+"個數:"+value);
});
//並行計算 (1+2=3, 3+4=7, 7+5.....)
List<Integer> list= Arrays.asList(1,2,4,3,5,6,7,8,9,10);
int sum = list.parallelStream().mapToInt(a -> a).sum();
System.out.println(sum);
}
}