ν°μ€ν 리 λ·°
π Stream
μλ° 8μμ μΆκ°λ μ€νΈλ¦Ό(Stream)μ λλ€λ₯Ό νμ©ν μ μλ κΈ°μ μ€ νλμ λλ€.
μλ° 8 μ΄μ μλ λ°°μ΄ λλ 컬λ μ μΈμ€ν΄μ€λ₯Ό λ€λ£¨λ λ°©λ²μ for λλ foreach λ¬Έμ λλ©΄μ μμ νλμ©μ κΊΌλ΄μ λ€λ£¨λ λ°©λ²μ΄μμ΅λλ€.
κ°λ¨ν κ²½μ°λΌλ©΄ μκ΄μμ§λ§ λ‘μ§μ΄ 볡μ‘ν΄μ§μλ‘ μ½λμ μμ΄ λ§μμ Έ μ¬λ¬ λ‘μ§μ΄ μμ΄κ² λκ³ , λ©μλλ₯Ό λλ κ²½μ° λ£¨νλ₯Ό μ¬λ¬ λ² λλ κ²½μ°κ° λ°μν©λλ€.
μ€νΈλ¦Όμ 'λ°μ΄ν°μ νλ¦' μ λλ€.
λ°°μ΄ λλ 컬λ μ μΈμ€ν΄μ€μ λ©μλ μ¬λ¬ κ°λ₯Ό μ‘°ν©ν΄μ μνλ κ²°κ³Όλ₯Ό νν°λ§νκ±°λ κ°κ³΅λ κ²°κ³Όλ₯Ό μ»μ μ μμ΅λλ€.
λν λλ€(Lambda)λ₯Ό μ΄μ©ν΄μ μ½λμ μμ μ€μ΄κ³ κ°κ²°νκ² ννν μ μμ΅λλ€.
μ¦, λ°°μ΄κ³Ό 컬λ μ μ ν¨μνμΌλ‘ μ²λ¦¬ν μ μμ΅λλ€.
π Iteratorμ Streamμ μ½λ λΉκ΅
μλ° 6 μ΄μ κΉμ§λ ArrayListμμ μμλ₯Ό μμ°¨μ μΌλ‘ μ²λ¦¬νκΈ° μν΄ IteratorλΌλ λ°λ³΅μλ₯Ό μλμ κ°μ΄ μ¬μ©νμμ΅λλ€.
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1, 2, 3));
Iterator<Integer> iter = list.iterator();
while(iter.hasNext()) {
int num = iter.next();
System.out.prinln("κ°: " + num);
}
νμ§λ§ μλ° 8λΆν° μΆκ°λ μ€νΈλ¦Όμ μ¬μ©νλ©΄ ν¨μ¬ λ¨μνκ² μ½λ©ν μ μμ΅λλ€.
μλ° 8 μ΄νμ μμ±λ μ½λμμλ λλ€μμΌλ‘ κΈ°μ λ λΆλΆμμλ κΌ Streamμ΄ λ€μ΄κ°λ λΆλΆμ΄ λ§μλ°μ.
μλμμλ stream() λ©μλλ‘ μ€νΈλ¦Ό κ°μ²΄λ₯Ό μ»μ ν
foreach() λ©μλλ₯Ό ν΅ν΄ ArrayListμ μλ μμλ€μ νλμ© μΆλ ₯ν©λλ€.
ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1, 2, 3));
list.stream().forEach(num -> System.out.println("κ°: " + num));
μ½λκ° κ΅μ₯ν 짧μμ§μ£ ..?
β μ€νΈλ¦Ό(Stream) μ¬μ©λ²
1. λ°°μ΄μμμ μ€νΈλ¦Ό νμ©
// String λ°°μ΄
String[] strArray = {"νκΈΈλ", "μ΄μμ ", "κ°κ°μ°¬"};
Stream<String> strStream = Arrays.stream(strArray);
strStream.forEach(e -> System.out.println(e + ","));
// int λ°°μ΄
int[] intArray = {1, 2, 3, 4, ,5};
IntStream intStream = Arrays.stream(intArray);
intStream.forEach(e -> System.out.println(e + ","));
2. ArrayListμμμ μ€νΈλ¦Ό νμ©
ArrayList νμ μμλ λ°λ‘ stream()μ΄λΌλ λ©μλλ₯Ό ν΅ν΄ stream νμ μΌλ‘ λ°κΏμ£Όμ΄ λ°λ‘ streamμ λ©μλλ₯Ό μ¬μ©ν μλ μμ΅λλ€.
ArrayList<Integer> datas = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));
datas.stream().forEach(e -> System.out.println(e));
β μ€νΈλ¦Ό(Stream) λν λ©μλ
1. forEach() : κ°μ νλμ© κ°μ Έμ¨λ€
forEach() λ©μλλ₯Ό ν΅ν΄μ ArrayListμ λ΄μλμλ μμ΄ν μ νλμ© κ°μ Έμ€κ² λ©λλ€.
μ΄ μμ΄ν μ νλμ© κ°μ Έμ¨λ€κ³ μκ°νκ³ μμ΄ν μ μ²λ¦¬ν΄ μ£Όλ©΄ λ©λλ€.
ArrayList<Integer> datas = new ArrayList<Integer>(Arrays.asList(10, 20, 30, 40, 50));
datas.stream().forEach(data -> System.out.println(data));
// forEach()λ streamμ μλ΅νκ³ λ°λ‘ μ¬μ© κ°λ₯
datas.forEach(data -> System.out.println(data));
β ν΄λμ€μ λ©μλ μ°Έμ‘°
μλ°μμλ ν΄λμ€λ₯Ό μ¬μ©ν΄μ μ§μ λ©μλλ₯Ό μ°Έμ‘°μμΌ λ©μλλ₯Ό μ¬μ©ν μ μμ΅λλ€.
μ΄λ "::"κΈ°νΈλ₯Ό μ¬μ©ν©λλ€.
μλ₯Ό λ€λ©΄
System.out.println -> System.out::println
μ²λΌ μ¬μ©μ΄ κ°λ₯ν©λλ€.
λ¨μ λ°λ³΅λ¬Έ μΆλ ₯μΌλ‘ μμ μ½λλ₯Ό μμ±ν΄ λ³΄κ² μ΅λλ€.
ArrayList<Integer> datas = new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));
datas.forEach(System.out::println);
λ©μλμ μ°Έμ‘°λ κ°μ Έμ¨ κ°μ λ°λ‘ μ΄μ©ν λ μ¬μ©ν©λλ€.
μμ κ°μ κ²½μ°μλ forEachλ₯Ό ν΅ν΄ μμ΄ν μ κ°μ Έμ€μλ§μ λ°λ‘ System.out.println ν κ²μ΄μκΈ° λλ¬Έμ μμ κ°μ΄ μ°Έμ‘°νμΌλ‘ μ¬μ©μ΄ κ°λ₯νλ κ²μ λλ€.
μ΄μ΄μ§λ Stream λ©μλ μμ μμ κ³μ μ¬μ©ν μμ μ΄λ μ°Έκ³ νμλ©΄ μ’κ² μ΅λλ€ :)
2. map() : κΈ°μ‘΄ κ° μ‘°μ
forEach()μ κ°μ΄ μμ΄ν μ νλμ© κ°μ Έμ€λλ° λ°νμ ν μ μμ΄ κ°μ μ‘°μν λ μμ£Ό μ¬μ©λλ λ©μλμ λλ€.
μλ μ½λλ κΈ°μ‘΄μ μλ κ°μ 2λ°°μΈ κ°μ μΆλ ₯νλ μμ μ λλ€.
ArrayList<Integer> datas = new ArrayList<Integer>(Arrays.asList(10, 20, 30, 40, 50));
datas.stream().map(data -> data*2).forEach(System.out::println);
3. IntStream.range(inclusive, exclusive), IntStream.rangeClosed(inclusive, inclusive) : λ²μλ₯Ό λ§λ€μ΄λΈλ€
range() λ©μλλ μ°λ¦¬κ° μΌμΌμ΄ forλ¬Έμ μΈλ±μ€κ°μ λ£κ³ λλ €μ μ¬μ©ν κ²μμ΄
λ°λ‘ ν μ€μ΄λ©΄ μ§μ ν λ²μλλ‘ stream κ°μ²΄λ₯Ό λ§λλλ€.
μλ μμ λ 1~10κΉμ§λ₯Ό ArrayListμ λ΄λ μμ μ λλ€.
ArrayList<Integer> datas = new ArrayList<Integer>();
IntStream.rangeClosed(1, 10).forEach(datas::add);
4. String.chars() : λ¬Έμμ΄μ IntStreamμΌλ‘ λ³ν(μμ€ν€μ½λκ°μΌλ‘ λ€μ΄κ°)
chars()λ μ£Όμν΄μ μ¨μΌ νλ κ²μ΄ λ¬Έμμ΄μμ char νλνλλ₯Ό IntStreamμΌλ‘ 리ν΄νκΈ° λλ¬Έμ
λ€μ΄κ°λ κ°μ΄ char μ΄λλΌλ λ§μ§λ§μ λ€μ κ°μ νλ³νμ ν΄μ€μΌ ν©λλ€.
String data = "ABC";
System.out.println(data.chars());
λ€μ μμ λ λ€μ΄μ¨ λ¬Έμμ΄μ νλνλμ charλ‘ μΆλ ₯νλ μμ μ λλ€. (λ§μ§λ§μ κ°μ νλ³νμ ν΄μΌνλ κ²μ μμ§λ§μλ€!)
String data = "ABC";
data.chars().forEach(c -> System.out.println((char)c));
5. filter() : 쑰건μμ΄ trueμΌ λλ§ μΆμΆ(리ν΄)
filter() λ©μλ μμλ 쑰건μμ μμ±ν΄μ νλμ© λ€μ΄μ€λ κ°μ΄ 쑰건μμ trueμΌ κ²½μ°μλ§ λ€μμΌλ‘ λμ΄κ°λλ€.
쑰건μμ falseμΈ κ²½μ°μλ λ€μμΌλ‘ λμ΄κ°μ§ λͺ»ν©λλ€.
λ€μ μμ λ 0~9κΉμ§μ μ«μ μ€ μ§μλ§μ μΆλ ₯νλ μμ μ λλ€.
IntStream.range(0, 10).filter(e -> e%2==0).forEach(System.out::println);
6. sorted() : μ λ ¬
sorted() λ©μλλ μ λ ¬μ ν΄μ€λλ€.
κ·Έλ μ§λ§ μλ³Έμ 건λλ¦¬μ§ μλλ€λ μ μ κΌ μκ³ μμ΄μΌ ν©λλ€!
ArrayList<Integer> datas = new ArrayList<Integer>(Arrays.asList(1, 6, 5, 7, 2));
datas.stream().sorted().forEach(System.out::print); // 12567
// μλ³Έμ 건λλ¦¬μ§ μμ
System.out.println(datas); // [1, 6, 5, 7, 2]
7. collect() : κ²°κ³Όλ₯Ό λ€μν νμ μΌλ‘ 리ν΄ν΄μ€λ€
μ¬λ¬ κ°μ§ μμ κ° μκ² μ§λ§, μλ μμ λ μ, λΆ, μ΄κ° ArrayListλ‘ μ£Όμ΄μ‘μ λ μ΄ μμ΄ν λ€μ μ‘°ν©ν΄μ μ:λΆ:μ΄ λ¬Έμμ΄λ‘ λ§λλ μμ μ λλ€.
ArrayList<Integer> datas = new ArrayList<Integer>(Arrays.asList(10:30:15));
System.out.println(datas.stream().map(String::valueOf).collect(Collectors.joining(":"))); // 10:30:15
β String.valueOf() : λ€μ΄μ€λ κ°μ²΄λ₯Ό String κ°μ²΄λ‘ λ³ννλ μν μ ν©λλ€.
'λ°±μλ > Java' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
- Total
- Today
- Yesterday
- νλ‘ νΈμλ
- λνλ§
- TypeScript
- Python
- μλ°
- μλ°μ€ν¬λ¦½νΈ
- JSP
- 리μ‘νΈ ν
- νμ΄μ¬
- λ₯λ¬λ
- react
- νλ‘ νΈμλ κΈ°μ΄
- rtl
- λ°μ΄ν°λΆμ
- HTML
- νλ‘μ νΈ νκ³
- next.js
- styled-components
- jest
- CSS
- μ€νμΌ μ»΄ν¬λνΈ styled-components
- frontend
- νλ‘ νΈμλ 곡λΆ
- λ¨Έμ λ¬λ
- μΈνλ°
- testing
- μλ°μ€ν¬λ¦½νΈ κΈ°μ΄
- react-query
- νμ μ€ν¬λ¦½νΈ
- 리μ‘νΈ
μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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 | 31 |