๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Java

[JAVA] Stream API

by ๋Œ€๋ณต2 2024. 7. 25.

Stream API???

๋žŒ๋‹ค๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ฐฐ์—ด์ด๋‚˜ Collection ์ž๋ฃŒ๊ตฌ์กฐ๋“ค์„ ๋”ธ๊น(?)ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” API๋‹ค.

๋ฐ์ดํ„ฐ์˜ CRUD๊ฐ€ ํ•„์š”ํ•  ๋•Œ, for๋ฌธ์„ ์ด์šฉํ•˜๊ฑฐ๋‚˜, Iterator๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด ์žˆ์—ˆ์ง€๋งŒ ์ฝ”๋“œ๊ฐ€ ๊ธธ์–ด์ง€๊ณ ,

ํƒ€์ž…๋งˆ๋‹ค ๋‹ค๋ฅด๊ฒŒ ๋‹ค๋ค„์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์™”๋‹ค.

 

๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜ํ•ด ๋†“์•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๋Š” ๋ฉ”์„œ๋“œ๋งŒ ์ฃผ๋ ์ฃผ๋  ๋‹ฌ๋ฉด

์‰ฝ๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ๊ทธ๋Ÿฐ API๊ฐ€ ๋˜์‹œ๊ฒ ๋‹ค.

 

 

 

Stream์˜ ํŠน์ง•

- ์ƒ์„ฑ - ์ค‘๊ฐ„ ์ฒ˜๋ฆฌ - ์ตœ์ข… ์ฒ˜๋ฆฌ ์ˆœ์„œ๋กœ ์ด์–ด์ง„๋‹ค.

- ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ๊ฐ ๋‹จ๊ณ„๊ฐ€ ๋๋‚  ๋•Œ๋งˆ๋‹ค ๋งŒ๋“ค์–ด์ง„ ์ฒ˜๋ฆฌ๋ฅผ ๋‹ค์Œ ๋ฉ”์„œ๋“œ์— ๋„˜๊ธฐ๋Š” ๋ฐฉ์‹์ด๋‹ค.

- ์ตœ์ข… ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚˜๋ฉด ๋‹ค์‹œ ์ค‘๊ฐ„์ฒ˜๋ฆฌ๋กœ ๊ฐˆ ์ˆ˜ ์—†๊ณ , ์žฌ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

- ์ค‘๊ฐ„ ์ฒ˜๋ฆฌ๋Š” ์ตœ์ข… ์ฒ˜๋ฆฌ๊ฐ€ ์ง„ํ–‰๋  ๋•Œ๊นŒ์ง€ ์ง€์—ฐ๋œ๋‹ค.

 

 

 

Stream์˜ ์ƒ์„ฑ

์ด์™ธ์—๋„

Stream <Integer> s = Stream.iterate(2, n->n+2). limit(3); // 2,4,6

Stream <String> s = Stream.generate(() ->"a"). limit(5); // a, a, a, a, a

์œผ๋กœ ์ƒ์„ฑ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

 

Stream์˜ ์ฒ˜๋ฆฌ

 

 

์ค‘๊ฐ„ ์ฒ˜๋ฆฌ

distinct() // ์ค‘๊ฐ„์ฒ˜๋ฆฌ

filter() // ์ŠคํŠธ๋ฆผ ๋‚ด ์š”์†Œ๋ฅผ ํ‰๊ฐ€, if๋ฌธ

skip(n) // ์•ž์—์„œ๋ถ€ํ„ฐ n๊ฐœ๋งŒํผ ์Šคํ‚ต

Mapping // ํŠน์ • ํƒ€์ž…(๊ฐ’)์œผ๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉ

 

 

์ตœ์ข… ์ฒ˜๋ฆฌ

Match // ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ๋ฅผ ์ฒดํฌ

allMatch // ๋ชจ๋‘ ๋งŒ์กฑํ•˜๋Š”์ง€

anyMatch // ํ•˜๋‚˜๋ผ๋„ ์žˆ๋Š”์ง€

noneMatch // ๋ชจ๋‘ ๋งŒ์กฑํ•˜์ง€ ์•Š๋Š”์ง€

 

collect() //์ŠคํŠธ๋ฆผ ์š”์†Œ๋ฅผ ์›ํ•˜๋Š” ์ž๋ฃŒํ˜•์œผ๋กœ ๋ณ€ํ™˜

forEach() // ์ŠคํŠธ๋ฆผ ๊ฐ’์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐธ์กฐ

reduce() // ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ค„์ด๊ธฐ

'Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[JAVA] File I/O  (0) 2024.07.28
[JAVA] Exception  (0) 2024.07.28
[JAVA] Lambda  (0) 2024.07.24
[JAVA] Comparable? Comparator?  (3) 2024.07.23
[JAVA] Generic  (3) 2024.07.22