์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ํ๋ฐฉ์ฟผ๋ฆฌ
- StringBuilder
- ๋ฐฐ์ด
- ์ฟ ํกERD
- ๋ฐฑ์ค1874
- ์ฐ์ฐ์
- ์คํ
- StringBuffer
- ๋ฐฑ์ค9093
- ๋ฐ์ดํฐํ์
- stream
- ์
- ๋ฌธ์์ด
- ์ฐ
- ์คํธ๋ฆผ
- ์คํ์์ด
- ์ฟ ํกDB
- ์๋ฐ
- ๋
- ๋ฐฑ์ค9012
- java
- ๋ฐฑ์ค11053 #ํ์ด์ฌ #python
- Today
- Total
Tech Log ๐ ๏ธ
[java] ์คํธ๋ฆผ ์์ ์ฒ๋ฆฌ ๋ณธ๋ฌธ
์๋ฐ8 ๋ถํฐ ์ปฌ๋ ์ ๋ฐ ๋ฐฐ์ด์ ์์ ๋ฐ ๋ฐ๋ณต ์ฒ๋ฆฌ๋ฅผ ์ํด ์คํธ๋ฆผ์ ์ฌ์ฉํ ์ ์๋ค.
์คํธ๋ฆผ์ด๋ ?
์คํธ๋ฆผ์ ์์๋ค์ด ํ๋์ฉ ํ๋ฌ๊ฐ๋ฉด์ ์ฒ๋ฆฌ๋๋ค๋ ์๋ฏธ๋ฅผ ๋ด์ฅ
์คํธ๋ฆผ ์์ด ์ปฌ๋ ์ ๋ฐ ๋ฐฐ์ด์ ์ ์ฅ๋ ์์๋ฅผ ๋ฐ๋ณต ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ for ๋ฌธ์ด๋ iterator๋ฅผ ์ด์ฉํ์ด์ผํ๋ค.
ํ์ง๋ง ์คํธ๋ฆผ์ ๋ฑ์ฅ์ผ๋ก ๋งค๋ฌด ๋น ๋ฅด๊ณ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์๋ค.
์คํธ๋ฆผ ์์ด ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ
List<String> list = ...;
for(int i=0;i<list.size();i++){
String item = list.get(i);
}
์คํธ๋ฆผ ์ฌ์ฉ
Stream<String> stream = list.stream();
stream.forEach(item -> //item์ฒ๋ฆฌ);
์คํธ๋ฆผ์ ์ฌ์ฉํ๋ฉด ๋ญ๊ฐ ์ข์๊น?
1. ๋ด๋ถ๋ฐ๋ณต์์ด๋ฏ๋ก ๋น ๋ฅด๊ณ ํจ์จ์ ์ด๋ค.
2. ๋๋ค์์ผ๋ก ๋ค์ํ ์์ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ค.
3. ์ค๊ฐ ์ฒ๋ฆฌ์ ์ต์ข ์ฒ๋ฆฌ๋ฅผ ์ํํ๋๋ก ํ์ดํ ๋ผ์ธ์ ํ์ฑํ ์ ์๋ค.
๋ด๋ถ๋ฐ๋ณต์
์คํธ๋ฆผ์ ์ฅ์ 1๋ฒ์์ ๋ด๋ถ๋ฐ๋ณต์์ด๋ฏ๋ก ๋น ๋ฅด๊ณ ํจ์จ์ ์ด๋ผ๊ณ ํ์๋ค.๊ทผ๋ฐ ์ฌ๊ธฐ์ '๋ด๋ถ ๋ฐ๋ณต์'๋ ๋ฌด์์ผ๊น?
๋จผ์ for ๋ฌธ์ ๋ณผ ํ์๊ฐ ์๋ค.
List<String> list = ...;
for(int i=0;i<list.size();i++){
String item = list.get(i);
}
๊ธฐ์กด for๋ฌธ์ ์ธ๋ถ ๋ฐ๋ณต์์ด๋ค.
์ธ๋ถ๋ฐ๋ณต์๋ ์ปฌ๋ ์ ์ ์์๋ฅผ ์ปฌ๋ ์ ๋ฐ๊นฅ์ชฝ์ผ๋ก ๊บผ๋ด์์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋งํ๋ค.
์์ ์ฝ๋์์๋ ์ปฌ๋ ์ ์ ์์๋ค์ item ์ด๋ผ๋ ๋ณ์๋ด์ ๊ฐ์ ธ์์ ์ฒ๋ฆฌํ๊ณ ์๋ค.
ํ์ง๋ง,
๋ด๋ถ๋ฐ๋ณต์(์คํธ๋ฆผ) ์ ์ปฌ๋ ์ ๋ด๋ถ์์ ์์๋ฅผ ๋ฐ๋ณต ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ปฌ๋ ์ ์์๋ค์ ๋ฐ์ผ๋ก ๊บผ๋ผ ํ์๊ฐ ์์ด์ ๋์ฑ ๋น ๋ฅด๊ณ ํจ์จ์ ์ด๋ค.
์ด ์ธ์๋ ๋ด๋ถ ๋ฐ๋ณต์๋ ๋ฉํฐ์ฝ์ด CPU๋ฅผ ์ต๋ํ ํ์ฉํ๊ธฐ ๋๋ฌธ์ ์์๋ค์ ๋ถ๋ฐฐ์์ผ ๋ณ๋ ฌ ์์ ์ ํ ์ ์๋ค.
์ค๊ฐ ์ฒ๋ฆฌ์ ์ต์ข ์ฒ๋ฆฌ
์คํธ๋ฆผ์ ํฌ๊ฒ ์ธ๊ฐ์ง๋ก ๊ตฌ๋ถ๋๋ค.
//์ค๋ฆฌ์ง๋ ์คํธ๋ฆผ
Stream<Student> student = list.stream();
//์ค๊ฐ์ฒ๋ฆฌ ์คํธ๋ฆผ(๋งคํ)
IntStream scoreStream = studentStream.mapToInt( student -> student.getScore());
//์ต์ข
์ฒ๋ฆฌ ์คํธ๋ฆ (์ง๊ณ)
double avg = scoreItem = scoreStream.average().getAsDouble();
1. ์ค๋ฆฌ์ง๋ ์คํธ๋ฆผ
2. ์ค๊ฐ ์ฒ๋ฆฌ ์คํธ๋ฆผ
- ๋งคํ ์ค๊ฐ ์คํธ๋ฆผ์ด ์ฐ๊ฒฐ ๋ ์ ์๋ค.
- ํํฐ๋ง , ๋งคํ ,์ ๋ ฌ ์์ ์ํ
3. ์ต์ข ์ฒ๋ฆฌ ์คํธ๋ฆผ
- ์ค๊ฐ ์ฒ๋ฆฌ์์ ์ ์ ๋ ์์๋ค์ ๋ฐ๋ณตํ๊ฑฐ๋ , ์ง๊ณ ์์ (์นด์ดํ , ์ข ํฉ , ํ๊ท )์ ์ํ
- ์ต์ข ์ฒ๋ฆฌ ์คํธ๋ฆผ์ด ์์ผ๋ฉด ์คํธ๋ฆผ์ด ์คํ๋์ง ์๋๋ค.
์คํธ๋ฆผ์ ์ข ๋ฅ
BaseStream ์๋ ๋ชจ๋ ์คํธ๋ฆผ์์ ์ฌ์ฉํ ์ ์๋ ๊ณตํต ๋ฉ์๋๋ค์ด ์ ์๋์ด์๋ค.
BaseStream์ ์์ ์ธํฐํ์ด์ค๋ค์ ๋ค์๊ณผ ๊ฐ์ ์์ ๊ด๊ณ๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
1. Stream
- ๊ฐ์ฒด ์์๋ฅผ ์ฒ๋ฆฌ
2. IntStream
- int ์์๋ฅผ ์ฒ๋ฆฌ
3. LongStream
- long ์์๋ฅผ ์ฒ๋ฆฌ
4. DoubleStream
- double ์์๋ฅผ ์ฒ๋ฆฌ
๋ฆฌ์์ค๋ก๋ถํฐ ์คํธ๋ฆผ ์ป๊ธฐ
1. ์ปฌ๋ ์ ์ผ๋ก๋ถํฐ ์คํธ๋ฆผ ์ป๊ธฐ
- List ์ Set ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๋ชจ๋ ์ปฌ๋ ์ ์์ ๊ฐ์ฒด์คํธ๋ฆผ์ ์ป์ ์ ์๋ค.
ex) Product ๋ผ๋ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ ๋ฆฌ์คํธ๋ก๋ถํฐ ์คํธ๋ฆผ์ ๋ฐ๋ ์ฝ๋
Stream<Product> stream = list.stream();
2. ๋ฐฐ์ด๋ก๋ถํฐ ์คํธ๋ฆผ ์ป๊ธฐ
- java.utils.Arrays ํด๋์ค๋ฅผ ์ด์ฉํ๋ฉด ๋ค์ํ ์ข ๋ฅ์ ๋ฐฐ์ด๋ก๋ถํฐ ์คํธ๋ฆผ์ ์ป์ ์ ์๋ค.
//๋ฌธ์์ด ๋ฐฐ์ด
String[] strArray = {"ํ๊ธธ๋","์ ์ฉ๊ถ","๊น๋ฏธ๋"};
//๋ฌธ์์ด ์คํธ๋ฆผ(strStream) ์ ์ป์ ์ ์๋ค.
String<String> strStream = Arrays.stream(strArray);
//์ ์ ๋ฐฐ์ด
int[] intArray = {1,2,3,4,5};
//๋ฌธ์์ด ์คํธ๋ฆผ(intStream) ์ ์ป์ ์ ์๋ค.
IntStream intS1tream = Arrays.stream(intArray);
์ด์ธ์๋ ์ซ์ ๋ฒ์๋ ํ์ผ ๋ฑ๋ฑ ์ฌ๋ฌ ๋ฆฌ์์ค๋ก ๋ถํฐ ์คํธ๋ฆผ์ ์ป์ ์ ์๋ค.
'TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL] ์ธ์ ์ธ์ฆ๊ณผ ํ ํฐ ์ธ์ฆ ๋ฐฉ์ (0) | 2023.03.22 |
---|---|
[java] ์ ๋ค๋ฆญ (0) | 2023.03.07 |
[java] ๋๋ค์ (0) | 2023.02.25 |
[java] ์ค์ฒฉ ์ ์ธ๊ณผ ์ต๋ช ๊ฐ์ฒด (0) | 2023.02.23 |
230102 ๊ณต๋ถ์ผ์ง - ์ปฌ๋ ์ ํ๋ ์์ํฌ (0) | 2023.01.02 |