๐ฅ ๊ฐ์
์ฐํ ์ฝ 3์ฃผ์ฐจ ์ฝ๋๋ฆฌ๋ทฐ ์งํ ์ค Lotto๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ๊ฐ์๋งํผ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ฝ๋๋ฅผ ๋ง๋๋๋ฐ, ๋ ์ข์ ์ฝ๋๋ฅผ ์ถ์ฒํด์ฃผ์ ์ Stream์ ํ์ฉ๊ณผ ์ฌํ์ ๋ํด ์์์ผ๊ฒ ๋ค. ๋ผ๊ณ ์๊ฐํ๋ค.
1. Stream ์์ฑํ๊ธฐ
Java์์ Stream์ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ค์ํฉ๋๋ค. ์ปฌ๋ ์ , ๋ฐฐ์ด, ํน์ ๋ฒ์์ ์ซ์ ๋ฑ์์ Stream์ ์์ฑํ ์ ์์ต๋๋ค.
List<String> list = Arrays.asList("a", "b", "c");
Stream<String> stream = list.stream();
2. Stream ๊ฐ๊ณตํ๊ธฐ(์ค๊ฐ์ฐ์ฐ)
Stream์ ๊ฐ๊ณตํ๋ ์ค๊ฐ ์ฐ์ฐ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค. ์ด๋ค์ Stream์ ๋ณํํ์ง๋ง, ์ต์ข ์ฐ์ฐ์ด ํธ์ถ๋๊ธฐ ์ ๊น์ง๋ ์คํ๋์ง ์์ต๋๋ค.
[ ํํฐ๋ง - Filter ]
ํน์ ์กฐ๊ฑด์ ๋ง๋ ์์๋ง ์ถ์ถํฉ๋๋ค.
stream.filter(s -> s.startsWith("a"));
[ ๋ฐ์ดํฐ ๋ณํ - Map ]
๊ฐ ์์์ ํจ์๋ฅผ ์ ์ฉํ์ฌ ๋ณํํฉ๋๋ค.
stream.map(String::toUpperCase);
[ ์ ๋ ฌ - Sorted ]
์ฃผ์ด์ง Comparator์ ๋ฐ๋ผ Stream์ ์์๋ฅผ ์ ๋ ฌํฉ๋๋ค.
stream.sorted(Comparator.naturalOrder());
[ ์ค๋ณต ์ ๊ฑฐ - Distinct ]
์ค๋ณต๋ ์์๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
stream.distinct();
[ ํน์ ์ฐ์ฐ ์ํ - Peek ]
๊ฐ ์์์ ๋ํด ์ถ๊ฐ์ ์ธ ์ฐ์ฐ์ ์ํํฉ๋๋ค. ์ฃผ๋ก ๋๋ฒ๊น ์ ์ ์ฉํฉ๋๋ค.
stream.peek(System.out::println);
[ ์์ Stream <-> Stream ]
๊ธฐ๋ณธํ ํ์ ์ Stream๊ณผ ๊ฐ์ฒดํ Stream ๊ฐ์ ๋ณํ์ ๋๋ค.
IntStream intStream = stream.mapToInt(String::length);
3. Stream ๊ฒฐ๊ณผ ๋ง๋ค๊ธฐ(์ต์ข ์ฐ์ฐ)
Stream์ ์ต์ข ์ฐ์ฐ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋์ถํฉ๋๋ค. ์ด ์ฐ์ฐ์ ์ํํ ํ์๋ Stream์ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค.
[ ์ต๋๊ฐ/์ต์๊ฐ/์ดํฉ/ํ๊ท /๊ฐฏ์ - Max/Min/Sum/Average/Count ]
Stream์ ์์์ ๋ํ ๋ค์ํ ํต๊ณ๋ฅผ ์ ๊ณตํฉ๋๋ค.
stream.count();
[ ๋ฐ์ดํฐ ์์ง - collect ]
Stream์ ์์๋ฅผ ๋ค์ํ ๋ฐฉ์์ผ๋ก ์์งํฉ๋๋ค.
1. Collectors.toList()
stream.collect(Collectors.toList());
2. Collectors.joining()
stream.collect(Collectors.joining(", "));
3. Collectors.averagingInt(), Collectors.summingInt(), Collectors.summarizingInt()
stream.collect(Collectors.averagingInt(String::length));
4. Collectors.groupingBy()
stream.collect(Collectors.groupingBy(String::length));
5. Collectors.partitioningBy()
stream.collect(Collectors.partitioningBy(s -> s.length() > 2));
[ ์กฐ๊ฑด ๊ฒ์ฌ - Match ]
ํน์ ์กฐ๊ฑด์ด Stream์ ๋ชจ๋ ์์์ ๋ํด ์ฐธ์ธ์ง, ํ๋๋ผ๋ ์ฐธ์ธ์ง, ๋ชจ๋ ๊ฑฐ์ง์ธ์ง ๊ฒ์ฌํฉ๋๋ค.
stream.allMatch(s -> s.contains("a"));
[ ํน์ ์ฐ์ฐ ์ํ - forEach ]
๊ฐ ์์์ ๋ํด ์ฐ์ฐ์ ์ํํฉ๋๋ค.
stream.forEach(System.out::println);
์ถ์ฒ
https://mangkyu.tistory.com/114
'Languege > Java & Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] jdk 17 - toList์ ํจ์ (0) | 2024.11.14 |
---|---|
[String Constant Pool] Heap? PermGen? ์คํด์ ์ง์ค (1) | 2024.01.07 |
RestAssured session ์ฌ์ฉ์ default value ์ ์ฅ (0) | 2023.05.17 |
Junit5 ์์๊ด๊ณ์์ BeforeEach ์์ (0) | 2023.05.17 |