STREAM์ด๋?
์๋ฐ์์๋ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์ ๋ฐฐ์ด์ด๋ ์ปฌ๋ ์ (List, Map, Set ๋ฑ)์ ์ฌ์ฉํ๋ค.
์ด๋ ๊ฒ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ๋ฐ๋ณต๋ฌธ์ด๋ ๋ฐ๋ณต์(iterator)๋ฅผ ์ฌ์ฉํ์ฌ ๋งค๋ฒ ์๋ก์ด ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ค.
ํ์ง๋ง ์ด๋ ๊ฒ ์์ฑ๋ ์ฝ๋๋ ๊ธธ์ด๊ฐ ๋๋ฌด ๊ธธ๊ณ ๊ฐ๋ ์ฑ๋ ๋จ์ด์ง๋ฉฐ, ์ฝ๋์ ์ฌ์ฌ์ฉ์ด ๊ฑฐ์ ๋ถ๊ฐ๋ฅํ๋ค๋ ๋จ์ ์ด ์์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฟผ๋ฆฌ์ ๊ฐ์ด ์ ํํ๋ ์ฒ๋ฆฌ ํจํด์ ๊ฐ์ง์ง ๋ชปํ๊ธฐ์ ๋ฐ์ดํฐ๋ง๋ค ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ ๊ทผํด์ผ๋ง ํ๋ค.
์ด๋ฌํ ๋ฌธ์ ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด์ Java SE 8๋ถํฐ ์คํธ๋ฆผ(stream) API๋ฅผ ๋์ ํ์๋ค.
์คํธ๋ฆผ API๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ํํ์ฌ ๋ค๋ฃจ๋ฏ๋ก, ๋ค์ํ ๋ฐฉ์์ผ๋ก ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๊ธฐ ์ํ ๊ณตํต๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ด๋ ์ปฌ๋ ์ ๋ฟ๋ง ์๋๋ผ ํ์ผ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ๋ชจ๋ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ค๋ฃฐ ์ ์๊ฒ ๋๋ค.
์กฐ๊ธ ๋ ์ดํด๊ฐ ์ฝ๊ฒ Stream์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ฅผ ์์๋ณด๊ณ ์ ํ๋ค.
์คํธ๋ฆผ ์ฌ์ฉ๋ฒ

์คํธ๋ฆผ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ค์์ ๊ณผ์ ์ด ํ์ํ๋ค.
- ์คํธ๋ฆผ ์์ฑ : ์คํธ๋ฆผ ์ธ์คํด์ค ์์ฑ
- ์คํธ๋ฆผ ๊ฐ๊ณต (์ค๊ฐ์ฐ์ฐ) : ํํฐ๋ง(filtering) ๋ฐ ๋งตํ(mapping) ๋ฑ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด๊ฐ๋ ์ค๊ฐ ์์ (intermediate operations).
- ์คํธ๋ฆผ ๊ฒฐ๊ณผ (์ต์ข ์ฐ์ฐ) : ์ต์ข ์ ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด๋ด๋ ์์ (terminal operations).
๐ ์ฐธ๊ณ ์๋ฃ
http://www.tcpschool.com/java/java_io_stream
์ฝ๋ฉ๊ต์ก ํฐ์จํผ์ค์ฟจ
4์ฐจ์ฐ์ ํ๋ช , ์ฝ๋ฉ๊ต์ก, ์ํํธ์จ์ด๊ต์ก, ์ฝ๋ฉ๊ธฐ์ด, SW์ฝ๋ฉ, ๊ธฐ์ด์ฝ๋ฉ๋ถํฐ ์๋ฐ ํ์ด์ฌ ๋ฑ
tcpschool.com
'๐ต java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA | ์ฌ์น ์ฐ์ฐ ๊ณ์ฐ๊ธฐ ์ค์ต - (2) (0) | 2023.08.19 |
---|---|
JAVA | ์ฌ์น ์ฐ์ฐ ๊ณ์ฐ๊ธฐ ์ค์ต - (1) (0) | 2023.08.15 |
JAVA | JPA Repository์ ์ฌ์ฉ๋ฒ๊ณผ ๋ฉ์๋ (0) | 2023.07.14 |
JAVA | JPA ์์๋ณด๊ธฐ (JPA, JDBC, Hibernate & JPA) (0) | 2023.07.10 |
JAVA | DTO๋ (0) | 2023.07.07 |
STREAM์ด๋?
์๋ฐ์์๋ ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์ ๋ฐฐ์ด์ด๋ ์ปฌ๋ ์ (List, Map, Set ๋ฑ)์ ์ฌ์ฉํ๋ค.
์ด๋ ๊ฒ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์ ๊ทผํ๊ธฐ ์ํด์๋ ๋ฐ๋ณต๋ฌธ์ด๋ ๋ฐ๋ณต์(iterator)๋ฅผ ์ฌ์ฉํ์ฌ ๋งค๋ฒ ์๋ก์ด ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ค.
ํ์ง๋ง ์ด๋ ๊ฒ ์์ฑ๋ ์ฝ๋๋ ๊ธธ์ด๊ฐ ๋๋ฌด ๊ธธ๊ณ ๊ฐ๋ ์ฑ๋ ๋จ์ด์ง๋ฉฐ, ์ฝ๋์ ์ฌ์ฌ์ฉ์ด ๊ฑฐ์ ๋ถ๊ฐ๋ฅํ๋ค๋ ๋จ์ ์ด ์์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฟผ๋ฆฌ์ ๊ฐ์ด ์ ํํ๋ ์ฒ๋ฆฌ ํจํด์ ๊ฐ์ง์ง ๋ชปํ๊ธฐ์ ๋ฐ์ดํฐ๋ง๋ค ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ ๊ทผํด์ผ๋ง ํ๋ค.
์ด๋ฌํ ๋ฌธ์ ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด์ Java SE 8๋ถํฐ ์คํธ๋ฆผ(stream) API๋ฅผ ๋์ ํ์๋ค.
์คํธ๋ฆผ API๋ ๋ฐ์ดํฐ๋ฅผ ์ถ์ํํ์ฌ ๋ค๋ฃจ๋ฏ๋ก, ๋ค์ํ ๋ฐฉ์์ผ๋ก ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๊ธฐ ์ํ ๊ณตํต๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ด๋ ์ปฌ๋ ์ ๋ฟ๋ง ์๋๋ผ ํ์ผ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ ๋ชจ๋ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋ค๋ฃฐ ์ ์๊ฒ ๋๋ค.
์กฐ๊ธ ๋ ์ดํด๊ฐ ์ฝ๊ฒ Stream์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ฅผ ์์๋ณด๊ณ ์ ํ๋ค.
์คํธ๋ฆผ ์ฌ์ฉ๋ฒ

์คํธ๋ฆผ์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ค์์ ๊ณผ์ ์ด ํ์ํ๋ค.
- ์คํธ๋ฆผ ์์ฑ : ์คํธ๋ฆผ ์ธ์คํด์ค ์์ฑ
- ์คํธ๋ฆผ ๊ฐ๊ณต (์ค๊ฐ์ฐ์ฐ) : ํํฐ๋ง(filtering) ๋ฐ ๋งตํ(mapping) ๋ฑ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด๊ฐ๋ ์ค๊ฐ ์์ (intermediate operations).
- ์คํธ๋ฆผ ๊ฒฐ๊ณผ (์ต์ข ์ฐ์ฐ) : ์ต์ข ์ ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด๋ด๋ ์์ (terminal operations).
๐ ์ฐธ๊ณ ์๋ฃ
http://www.tcpschool.com/java/java_io_stream
์ฝ๋ฉ๊ต์ก ํฐ์จํผ์ค์ฟจ
4์ฐจ์ฐ์ ํ๋ช , ์ฝ๋ฉ๊ต์ก, ์ํํธ์จ์ด๊ต์ก, ์ฝ๋ฉ๊ธฐ์ด, SW์ฝ๋ฉ, ๊ธฐ์ด์ฝ๋ฉ๋ถํฐ ์๋ฐ ํ์ด์ฌ ๋ฑ
tcpschool.com
'๐ต java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA | ์ฌ์น ์ฐ์ฐ ๊ณ์ฐ๊ธฐ ์ค์ต - (2) (0) | 2023.08.19 |
---|---|
JAVA | ์ฌ์น ์ฐ์ฐ ๊ณ์ฐ๊ธฐ ์ค์ต - (1) (0) | 2023.08.15 |
JAVA | JPA Repository์ ์ฌ์ฉ๋ฒ๊ณผ ๋ฉ์๋ (0) | 2023.07.14 |
JAVA | JPA ์์๋ณด๊ธฐ (JPA, JDBC, Hibernate & JPA) (0) | 2023.07.10 |
JAVA | DTO๋ (0) | 2023.07.07 |