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 |