์คํธ๋ฆผ์ด๋?
-> ๋ค์ํ ๋ฐ์ดํฐ ์์ค(์ปฌ๋ ์
, ๋ฐฐ์ดโฆ)๋ฅผ ํ์คํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ค๋ฃจ๊ธฐ ์ํ ๊ฒ (JDK 1.8)
-> ์ปฌ๋ ์
, ๋ฐฐ์ด์ Stream์ ํตํด์ ๋ชจ๋ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ค๊ฐ์ฐ์ฐ(n๋ฒ)๊ณผ ์ต์ข
์ฐ์ฐ(1๋ฒ)์ ํตํด์ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
์คํธ๋ฆผ์ด ์ ๊ณตํ๋ ๊ธฐ๋ฅ
- ์คํธ๋ฆผ ๋ง๋ค๊ธฐ
- ์ค๊ฐ ์ฐ์ฐ (0~n๋ฒ)
- ์ต์ข
์ฐ์ฐ (1๋ฒ)
์ค๊ฐ ์ฐ์ฐ - ์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ ์คํธ๋ฆผ์ธ ์ฐ์ฐ. ๋ฐ๋ณต์ ์ผ๋ก ์ ์ฉ๊ฐ๋ฅ
์ต์ข ์ฐ์ฐ - ์ฐ์ฐ ๊ฒฐ๊ณผ๊ฐ ์คํธ๋ฆผ์ด ์๋ ์ฐ์ฐ. ๋จ ํ๋ฒ๋ง ์ ์ฉ๊ฐ๋ฅ (์คํธ๋ฆผ์ ์์๋ฅผ ์๋ชจ)= ์ค๋ณต์ ๊ฑฐ -> 5๊ฐ ์๋ฅด๊ธฐ -> ์ ๋ ฌ -> ์ถ๋ ฅ stream.distinct().limit(5).sorted().forEach(System.out::println)
์คํธ๋ฆผ์ ํน์ง
1.์คํธ๋ฆผ์ ๋ฐ์ดํฐ ์์ค๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ๋งํ ๋ฟ ๋ณ๊ฒฝํ์ง ์๋๋ค.
2.์คํธ๋ฆผ์ Iterator์ฒ๋ผ ์ผํ์ฉ์ด๋ค.(ํ์ํ๋ฉด ๋ค์ ์คํธ๋ฆผ์ ์์ฑํด์ผ ํจ)
3.์ต์ข
์ฐ์ฐ ์ ๊น์ง ์ค๊ฐ์ฐ์ฐ์ด ์ํ๋์ง ์๋๋ค. - ์ง์ฐ๋ ์ฐ์ฐ
4.์คํธ๋ฆผ์ ์์
์ ๋ด๋ถ ๋ฐ๋ณต์ผ๋ก ์ฒ๋ฆฌํ๋ค.
5.์คํธ๋ฆผ์ ์์
์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌ - ๋ณ๋ ฌ ์คํธ๋ฆผ
6.๊ธฐ๋ณธํ ์คํธ๋ฆผ - IntStream, LongStream, DoubleStream
- ์คํ ๋ฐ์ฑ & ์ธ๋ฐ์ฑ์ ๋นํจ์จ์ด ์ ๊ฑฐ๋จ(Stream ๋์ IntStream ์ฌ์ฉ)
- ์ซ์์ ๊ด๋ จ๋ ์ ์ฉํ ๋ฉ์๋๋ฅผ Stream๋ณด๋ค ๋ ๋ง์ด ์ ๊ณต
์คํธ๋ฆผ ๋ง๋ค๊ธฐ
๋์ ์์ฑ
IntStream intStream = new Random().ints(); // ๋ฌดํ ์คํธ๋ฆผ
intStream
.limit(5) // 5๊ฐ๋ง ์๋ฅด๊ธฐ
.forEach(System.out::println);
-1718854561
-1607368184
-2129637815
35186230
-650554357
ํน์ ๋ฒ์์ ์ ์
IntStream intStream = IntStream.range(1,5) // 1,2,3,4
IntStream intStream = IntStream.rangeClosed(1,5) // 1,2,3,4,5
๋๋ค์ ์ด์ฉ iterate(), generate()
Stream<Integer> evenStream = Stream.iterate(0, n -> n + 2) // 0, 2, 4, 6, ...
Stream<Double> randomStream = Stream.generate(Math::random); // ๋์ ๋ฌดํ ์
์คํธ๋ฆผ์ ์ฐ์ฐ
์ค๊ฐ ์ฐ์ฐ
- distinct() : ์ค๋ณต์ ์ ๊ฑฐ
- filter(์กฐ๊ฑด์) : ์กฐ๊ฑด์ ์ ๋ง๋ ์์ ์ ์ธ
- limit(long maxSize) : ์ผ๋ถ๋ฅผ ์๋ผ๋ธ๋ค.
- skip(long n) : ์ผ๋ถ๋ฅผ ๊ฑด๋๋ด๋ค.
- peek(Consumer comparator): ์คํธ๋ฆผ์ ์์์ ์์ ์ํ
- sorted() | sorted(Comparator comparator) : ์ ๋ ฌํ๋ค.
- map() : ์์๋ค์ ํน์ ์กฐ๊ฑด์ ํด๋นํ๋ ๊ฐ์ผ๋ก ๋ณํ
์ต์ข ์ฐ์ฐ
- forEach(action), forEachOrdered(action) : ์ง์ ๋ ์์ ์ํ
- count() : ๊ฐ์ ๋ฐํ
- max, min : ์ต๋๊ฐ /์ต์๊ฐ ๋ฐํ
- findAny() : ์๋ฌด๊ฑฐ๋ ํ๋ ๋ฐํ
- findFirst() : ์ฒซ ๋ฒ์งธ ์์ ๋ฐํ
- allMatch(์กฐ๊ฑด) : ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๋์ง
- anyMatch(์กฐ๊ฑด): ํ๋๋ผ๋ ๋ง์กฑํ๋์ง
- noneMatch(์กฐ๊ฑด): ๋ชจ๋ ๋ง์กฑํ์ง ์๋์ง
- toArray(): ๋ฐฐ์ด๋ก ๋ฐํ
- reduce() : ์คํธ๋ฆผ์ ์์๋ฅผ ํ๋์ฉ ์ค์ฌ๊ฐ๋ฉด์ ๊ณ์ฐ
- collect() : ์คํธ๋ฆผ์ ์์๋ฅผ ์์ง
์ฌ์ฉ ์์
์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ๋ฉด์ ์ฌ์ฉํ ๋๋ง๋ค ์ถ๊ฐ ์์ !
์ฐธ๊ณ ์๋ฃ
์ ํ๋ธ ๋จ๊ถ์ฑ์ ์ ์์ฝ๋ฉ : https://www.youtube.com/channel/UC1IsspG2U_SYK8tZoRsyvfg
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ์๋ฐ๋? (0) | 2022.05.01 |
---|---|
[Java] ์๋ฐ ์ปฌ๋ ์ Map (0) | 2022.01.11 |
[Java] ์๋ฐ ์ปฌ๋ ์ Set (0) | 2022.01.11 |
[Java] String ํด๋์ค ์ ๋ฆฌ (0) | 2022.01.08 |
[Java] ์์์ด๋? (0) | 2022.01.06 |