Stream
๋ฐฑ๊ธฐ์ ๋์ <๋ ์๋ฐ, Java 8>๋ฅผ ๋ณด๊ณ ๊ณต๋ถํ ๋ด์ฉ์ ๊ธฐ๋กํฉ๋๋ค.
1. ๊ฐ๋
๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ ์ ์ฅ์(์ปฌ๋ ์ )์ด ์๋๋ค. ์ฃผ์ํ ๊ฒ!
Functional in nature - ์คํธ๋ฆผ์ด ์ฒ๋ฆฌํ๋ ๋ฐ์ดํฐ์์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค.
์คํธ๋ฆผ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐ์ดํฐ๋ ์ค์ง ํ๋ฒ๋ง ์ฒ๋ฆฌํ๋ค.
๋ฌด์ ํ์ผ์๋ ์๋ค. - short circuit ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ์ ํํ ์ ์๋ค.
์ค๊ฐ ์คํผ๋ ์ด์ ์ ๊ทผ๋ณธ์ ์ผ๋ก lazy ํ๋ค.
์ค๊ฐ ์คํผ๋ ์ด์ : ์ค๊ฐ์์ ์ด์ด์ค๋ค.
์ข ๋ฃ(ํฐ๋ฏธ๋) ์คํผ๋ ์ด์ : ์ข ๋ฃ
์์ฝ๊ฒ ๋ณ๋ ฌ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
parallelStream() ์ดํ์ ์ฃผ๋ ์คํผ๋ ์ดํฐ๋ค์ ๋ชจ๋ ๋ณ๋ ฌ์ ์ผ๋ก ์ฒ๋ฆฌ๋๋ค.
์๊ธธ
๋ณ๋ ฌ์ฒ๋ฆฌ๊ฐ ํญ์ ๋น ๋ฅธ ๊ฒ์ ์๋๋ค.
๋ฐ์ดํฐ๊ฐ ์์ฒญ๋๊ฒ ๋ง์ ๊ฒฝ์ฐ, ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ ์ ์๋ค.
์ด์ฐ๋์๋ ๋ณ๋ ฌ์ฒ๋ฆฌ๋ ์ฐ๋ ๋๋ฅผ ํ๋ ๋ ๋ง๋๋ ๋น์ฉ์ด ๋ค๊ธฐ ๋๋ฌธ์ ์ฃผ์ํด์ผํ๋ค.
2. stream pipeline
0 ๋๋ ๋ค์์ ์ค๊ฐ ์คํผ๋ ์ด์ (intermediate operation)๊ณผ ํ ๊ฐ์ ์ข ๋ฃ ์คํผ๋ ์ด์ (terminal operation) ์ผ๋ก ๊ตฌ์ฑ๋๋ค.
์คํธ๋ฆผ์ ๋ฐ์ดํฐ ์์ค๋ ์ค์ง ํฐ๋ฏธ๋ ์คํผ๋ ์ด์ ์ ์คํํ ๋์๋ง ์ฒ๋ฆฌํ๋ค.
3. ์ค๊ฐ ์คํผ๋ ์ด์
Stream ์ ๋ฆฌํดํ๋ค.
Stateless / Stateful ์คํผ๋ ์ด์ ์ผ๋ก ์์ธํ๊ฒ ๊ตฌ๋ถํ ์๋ ์๋ค.
๋๋ถ๋ถ์ stateless
distinct, sorted ์ฒ๋ผ ์ด์ ์์ค ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํด์ผํ ๊ฒฝ์ฐ stateful
์์
filter, map, limit, skip, sorted ...
4. ์ข
๋ฃ ์คํผ๋ ์ด์
Stream ์ ๋ฆฌํดํ์ง ์๋๋ค.
๋ค์ํ ์ข ๋ฅ
collect, allMatch, count, forEach, min, max ..
5. ์ฐธ๊ณ
6. ์ฝ๋๋ก ํ์ธํ๊ธฐ
6-1. ๊ฑธ๋ฌ๋ด๊ธฐ
Filter(Predicate)
6-2. ๋ณ๊ฒฝํ๊ธฐ
Map(Function) ๋๋ FlatMap(Function)
์) ๊ฐ๊ฐ์ Post ์ธ์คํด์ค์์ String title๋ง ์๋ก์ด ์คํธ๋ฆผ์ผ๋ก
์) List<Stream<String>>์ String์ ์คํธ๋ฆผ์ผ๋ก
6-3. ์์ฑํ๊ธฐ
generate(Supplier) ๋๋ Iterate(T seed, UnaryOperator)
์) 10๋ถํฐ 1์ฉ ์ฆ๊ฐํ๋ ๋ฌด์ ํ ์ซ์ ์คํธ๋ฆผ
์) ๋๋ค int ๋ฌด์ ํ ์คํธ๋ฆผ
6-4. ์ ํํ๊ธฐ
limit(long) ๋๋ skip(long)
์) ์ต๋ 5๊ฐ์ ์์๊ฐ ๋ด๊ธด ์คํธ๋ฆผ์ ๋ฆฌํดํ๋ค.
์) ์์์ 3๊ฐ๋ฅผ ๋บ ๋๋จธ์ง ์คํธ๋ฆผ์ ๋ฆฌํดํ๋ค.
6-5. ์คํธ๋ฆผ์ ์๋ ๋ฐ์ดํฐ๊ฐ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋์ง ํ์ธ
anyMatch(), allMatch(), nonMatch()
์) k๋ก ์์ํ๋ ๋ฌธ์์ด์ด ์๋์ง ํ์ธํ๋ค. (true ๋๋ false๋ฅผ ๋ฆฌํดํ๋ค.)
์) ์คํธ๋ฆผ์ ์๋ ๋ชจ๋ ๊ฐ์ด 10๋ณด๋ค ์์์ง ํ์ธํ๋ค.
6-6. ๊ฐ์ ์ธ๊ธฐ
count()
์)10๋ณด๋ค ํฐ ์์ ๊ฐ์๋ฅผ ์ผ๋ค.
6-7. ์คํธ๋ฆผ์ ๋ฐ์ดํฐ ํ๋๋ก ๋ญ์น๊ธฐ
reduce(identity, BiFunction), collect(), sum(), max()
์)๋ชจ๋ ์ซ์ ํฉ ๊ตฌํ๊ธฐ
์)๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ List ๋๋ Set์ ์ฎ๊ฒจ๋ด๊ธฐ
Last updated