2022. 4. 6. 10:20ใJAVA/study
1๏ธโฃ Stream
์คํธ๋ฆผ์ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์๋ ์ ์ฅ์(Collection) ์ด ์๋๋ค!
Functional in nature, ์คํธ๋ฆผ์ด ์ฒ๋ฆฌํ๋ ๋ฐ์ดํฐ ์์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๋๋ค.
์คํธ๋ฆผ์ผ๋ก ์ฒ๋ฆฌํ๋ ๋ฐ์ดํฐ๋ ์ค์ง ํ๋ฒ๋ง ์ฒ๋ฆฌํ๋ค!
๋ฌด์ ํ์ผ ์๋ ์๋ค. -> ๊ทผ๋ฐ Short Circuit ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ์ ํํ ์ ์๋ค.
์ค๊ฐ ์คํผ๋ ์ด์ ์ ๊ทผ๋ณธ์ ์ผ๋ก lazyํ๋ค.
์์ฝ๊ฒ ๋ณ๋ ฌ์ฒ๋ฆฌํ ์ ์๋ค.
2๏ธโฃ ์คํธ๋ฆผ ํ์ดํ๋ผ์ธ
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๏ธโฃ Stream API
- ๊ฑธ๋ฌ๋ด๊ธฐ filter
- ๋ณ๊ฒฝํ๊ธฐ Map(Function) ๋๋ FlatMap(Function)
์) List<Stream<String>>์ String์ ์คํธ๋ฆผ์ผ๋ก
์) ๊ฐ๊ฐ์ Post ์ธ์คํด์ค์์ String title๋ง ์๋ก์ด ์คํธ๋ฆผ์ผ๋ก
- ์์ฑํ๊ธฐ generate(Supplier) ๋๋ Iterate(T seed, UnaryOperator)
์) ๋๋ค int ๋ฌด์ ํ ์คํธ๋ฆผ
์) 10๋ถํฐ 1์ฉ ์ฆ๊ฐํ๋ ๋ฌด์ ํ ์ซ์ ์คํธ๋ฆผ
- ์ ํํ๊ธฐ limit(long) ๋๋ skip(long)
์) ์ต๋ 5๊ฐ์ ์์๊ฐ ๋ด๊ธด ์คํธ๋ฆผ์ ๋ฆฌํดํ๋ค.
์) ์์์ 3๊ฐ๋ฅผ ๋บ ๋๋จธ์ง ์คํธ๋ฆผ์ ๋ฆฌํดํ๋ค.
- ์คํธ๋ฆผ์ ์๋ ๋ฐ์ดํฐ๊ฐ ํน์ ์กฐ๊ฑด์ ๋ง์กฑํ๋์ง ํ์ธ anyMatch(), allMatch(), nonMatch()
์) k๋ก ์์ํ๋ ๋ฌธ์์ด์ด ์๋์ง ํ์ธํ๋ค. (true ๋๋ false๋ฅผ ๋ฆฌํดํ๋ค.)
์) ์คํธ๋ฆผ์ ์๋ ๋ชจ๋ ๊ฐ์ด 10๋ณด๋ค ์์์ง ํ์ธํ๋ค.
- ๊ฐ์ ์ธ๊ธฐ count()
์) 10๋ณด๋ค ํฐ ์์ ๊ฐ์๋ฅผ ์ผ๋ค.
- ์คํธ๋ฆผ์ ๋ฐ์ดํฐ ํ๋๋ก ๋ญ์น๊ธฐ reduce(identity, BiFucntion), collect(), sum(), max()
์) ๋ชจ๋ ์ซ์ ํฉ ๊ตฌํ๊ธฐ
์) ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ list ๋๋ set์ ์ฎ๊ฒจ ๋ด๊ธฐ
'JAVA > study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] ๋ ์๋ฐ, Java 8 Date์ Time API (0) | 2022.04.11 |
---|---|
[JAVA] ๋ ์๋ฐ, Java 8 Optional (0) | 2022.04.11 |
[JAVA] ๋ ์๋ฐ, Java 8 ์ธํฐํ์ด์ค ๋ณํ (0) | 2022.04.06 |
[JAVA] ๋ ์๋ฐ, Java 8 ํจ์ํ ์ธํฐํ์ด์ค์ ๋๋ค ํํ์ (0) | 2022.04.06 |
[JAVA] 1. ์๋ฐ 8, LTS์ ๋น LTS ์ฐจ์ด, ์๋ฐ8 ์ฃผ์ ๊ธฐ๋ฅ (0) | 2022.04.06 |