๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Java

[Java-๊ธฐ์ดˆ] ์ŠคํŠธ๋ฆผ

by ์ฝ”๋”ฉํ•˜๋Š” ๋ถ•์–ด 2021. 2. 22.
๋ฐ˜์‘ํ˜•

โ–ถ ์ŠคํŠธ๋ฆผ

โ€‹

*์ŠคํŠธ๋ฆผ์ด๋ž€?

์—ฌ๋Ÿฌ ์ž๋ฃŒ์˜ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด ๋†“์€ ํด๋ž˜์Šค๊ฐ€ ์ŠคํŠธ๋ฆผ(stream)์ด๋‹ค.

์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•˜๋ฉด ๋ฐฐ์—ด, ์ปฌ๋ ‰์…˜ ๋“ฑ์˜ ์ž๋ฃŒ๋ฅผ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ž๋ฃŒ์— ๋”ฐ๋ผ ๊ธฐ๋Šฅ์„ ๊ฐ๊ฐ ์ƒˆ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์ž๋ฃŒ๊ฐ€ ๋ฌด์—‡์ธ์ง€์™€ ์ƒ๊ด€์—†์ด ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

โ€‹

 

-๋ฐฐ์—ด ์ถœ๋ ฅ๋ฌธ

int[] arr = {1, 2, 3, 4, 5};
for(int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

 

-์ŠคํŠธ๋ฆผ ์ถœ๋ ฅ๋ฌธ

int[] arr = {1, 2, 3, 4, 5};
Arrays.stream(arr).forEach(n -> System.out.println(n));

์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๊ณ  ๋ฏธ๋ฆฌ ๊ตฌํ˜„๋˜์–ด ์žˆ๋Š” forEach( ) ๋ฉ”์„œ๋“œ(์ตœ์ข…์—ฐ์‚ฐ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์–ด ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

โ€‹

โ€‹

โ€‹

*์ŠคํŠธ๋ฆผ ์—ฐ์‚ฐ

์ŠคํŠธ๋ฆผ ์—ฐ์‚ฐ์˜ ์ข…๋ฅ˜์—๋Š” ํฌ๊ฒŒ ์ค‘๊ฐ„ ์—ฐ์‚ฐ๊ณผ ์ตœ์ข… ์—ฐ์‚ฐ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. ์ค‘๊ฐ„ ์—ฐ์‚ฐ์€ ์ž๋ฃŒ๋ฅผ ๊ฑฐ๋ฅด๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜์—ฌ ๋˜ ๋‹ค๋ฅธ ์ž๋ฃŒ๋ฅผ ๋‚ด๋ถ€์ ์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค. ์ตœ์ข… ์—ฐ์‚ฐ์€ ์ƒ์„ฑ๋œ ๋‚ด๋ถ€ ์ž๋ฃŒ๋ฅผ ์†Œ๋ชจํ•ด ๊ฐ€๋ฉด์„œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ตœ์ข… ์—ฐ์‚ฐ์€ ๋งˆ์ง€๋ง‰์— ํ•œ ๋ฒˆ๋งŒ ํ˜ธ์ถœ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ตœ์ข… ์—ฐ์‚ฐ์ด ํ˜ธ์ถœ๋˜์–ด์•ผ ์ค‘๊ฐ„ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋งŒ๋“ค์–ด์ง„๋‹ค.

โ€‹

โ€‹

-์ค‘๊ฐ„ ์—ฐ์‚ฐ - filter( ), map( )

filter( )๋Š” ์กฐ๊ฑด์„ ๋„ฃ๊ณ  ๊ทธ ์กฐ๊ฑด์— ๋งž๋Š” ์ฐธ์ธ ๊ฒฝ์šฐ๋งŒ ์ถ”์ถœํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค.

map( )์€ ํด๋ž˜์Šค๊ฐ€ ๊ฐ€์ง„ ์ž๋ฃŒ ์ค‘ ์ด๋ฆ„๋งŒ ์ถœ๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค. map( )์€ ์š”์†Œ๋“ค์„ ์ˆœํšŒํ•˜์—ฌ ๋‹ค๋ฅธ ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.

filter( )์™€ map( ) ๋‘˜ ๋‹ค ํ•จ์ˆ˜๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉด์„œ ํ•ด๋‹น ์กฐ๊ฑด์ด๋‚˜ ํ•จ์ˆ˜์— ๋งž๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ถ”์ถœํ•ด ๋‚ด๋Š” ์ค‘๊ฐ„ ์—ญํ• ์„ ํ•œ๋‹ค.

โ€‹

-์ตœ์ข… ์—ฐ์‚ฐ - forEach( ), count( ), sum( ), reduce( )

์ตœ์ข… ์—ฐ์‚ฐ์€ ์ŠคํŠธ๋ฆผ์˜ ์ž๋ฃŒ๋ฅผ ์†Œ๋ชจํ•˜๋ฉด์„œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์ข… ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋˜๊ณ  ๋‚˜๋ฉด ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์€ ๋” ์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ตœ์ข… ์—ฐ์‚ฐ์€ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

forEach( )๋Š” ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด๋Š” ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.

ํ†ต๊ณ„์šฉ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” sum( ), count( )๋Š” ๋ฐฐ์—ด ์š”์†Œ์˜ ํ•ฉ๊ณ„๋ฅผ ๊ตฌํ•œ๋‹ค๋“ ๊ฐ€ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๋“ฑ์˜ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

โ€‹

โ€‹

โ€‹

*์ •์ˆ˜ ๋ฐฐ์—ด์— ์ŠคํŠธ๋ฆผ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ

โ€‹โ€‹

IntArrayTest.java

package stream;

import java.util.Arrays;

public class IntArrayTest {
	public static void main(String[] args) {
		int[] arr = { 1, 2, 3, 4, 5 };

		int sumVal = Arrays.stream(arr).sum(); // sum() ์—ฐ์‚ฐ์œผ๋กœ arr ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๊ฐ’์„ ๋ชจ๋‘ ๋”ํ•จ
		int count = (int) Arrays.stream(arr).count(); // count() ์—ฐ์‚ฐ์œผ๋กœ arr ๋ฐฐ์—ด์˜ ์š”์†Œ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•จ

		System.out.println(sumVal);  
		System.out.println(count);
	}
}

โ€‹<์‹คํ–‰ ๊ฒฐ๊ณผ>

โ€‹

โ€‹

โ€‹

*Collection์—์„œ ์ŠคํŠธ๋ฆผ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ

โ€‹

ArrayListStreamTest.java

package stream;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;

public class ArrayListStreamTest {
	public static void main(String[] args) {
		List<String> sList = new ArrayList<String>();
		sList.add("Tomas");
		sList.add("Edward");
		sList.add("Jack");

		Stream<String> stream = sList.stream(); // ์ŠคํŠธ๋ฆผ ์ƒ์„ฑ
		stream.forEach(s -> System.out.print(s + " ")); // ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅ
		System.out.println();

		sList.stream().sorted().forEach(s -> System.out.print(s + " ")); // ์ŠคํŠธ๋ฆผ ์ƒˆ๋กœ ์ƒ์„ฑ / ์ •๋ ฌ / ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์–ด ์ถœ๋ ฅ
	}
}

<์‹คํ–‰ ๊ฒฐ๊ณผ>

-18์ค„์— forEach( ) ๊ด„ํ˜ธ ์•ˆ์— ๊ตฌํ˜„๋˜๋Š” ๋žŒ๋‹ค์‹์˜ ์˜๋ฏธ

: forEach( ) ๋ฉ”์„œ๋“œ๊ฐ€ ์ˆ˜ํ–‰๋˜๋ฉด ์š”์†Œ๊ฐ€ ํ•˜๋‚˜์”ฉ ์ฐจ๋ก€๋กœ ๋ณ€์ˆ˜ s์— ๋Œ€์ž…๋˜๊ณ  ์ด๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์•„ ์ถœ๋ ฅ๋ฌธ์ด ํ˜ธ์ถœ๋œ๋‹ค.

-forEach( ) ๋ฉ”์„œ๋“œ๊ฐ€ ์ˆ˜ํ–‰๋˜๋ฉด ์ž๋ฃŒ๊ฐ€ ์†Œ๋ชจ๋˜๊ธฐ๋•Œ๋ฌธ์— ์ŠคํŠธ๋ฆผ์„ ์ƒˆ๋กœ ์ƒ์„ฑํ•ด์•ผํ•œ๋‹ค.

-18์ค„์—์„œ๋Š” ์ค‘๊ฐ„ ์—ฐ์‚ฐ์œผ๋กœ ์ •๋ ฌ์„ ์œ„ํ•œ sorted( ) ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜์—ˆ๋‹ค. sorted( ) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด

โ€‹

โ€‹

โ€‹

*์ŠคํŠธ๋ฆผ์˜ ํŠน์ง•

โ€‹

1. ์ž๋ฃŒ์˜ ๋Œ€์ƒ๊ณผ ๊ด€๊ณ„์—†์ด ๋™์ผํ•œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

์ŠคํŠธ๋ฆผ์€ ์ปฌ๋ ‰์…˜์˜ ์—ฌ๋Ÿฌ ์ž๋ฃŒ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์ด๋Ÿฌํ•œ ์ž‘์—…์„ ์ผ๊ด€์„ฑ ์žˆ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

โ€‹

2. ํ•œ ๋ฒˆ ์ƒ์„ฑํ•˜๊ณ  ์‚ฌ์šฉํ•œ ์ŠคํŠธ๋ฆผ์€ ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜ ์—†๋‹ค.

์–ด๋–ค ์ž๋ฃŒ์— ๋Œ€ํ•œ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๊ณ  ์ด ์ŠคํŠธ๋ฆผ์— ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ–ˆ๋‹ค๋ฉด ํ•ด๋‹น ์ŠคํŠธ๋ฆผ์„ ๋‹ค์‹œ ๋‹ค๋ฅธ ์—ฐ์‚ฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐฐ์—ด์— ์žˆ๋Š” ์š”์†Œ๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ์š”์†Œ๋“ค์„ ํ•˜๋‚˜์”ฉ ์ˆœํšŒํ•˜๋ฉด์„œ ์ถœ๋ ฅ์— ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ์ด๋•Œ ์š”์†Œ๋“ค์ด '์†Œ๋ชจ๋œ๋‹ค'๊ณ  ์ด์•ผ๊ธฐํ•œ๋‹ค. ๋งŒ์•ฝ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ํ˜ธ์ถœํ•˜๋ ค๋ฉด ์ŠคํŠธ๋ฆผ์„ ์ƒˆ๋กœ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค.

โ€‹

3. ์ŠคํŠธ๋ฆผ์˜ ์—ฐ์‚ฐ์€ ๊ธฐ์กด ์ž๋ฃŒ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ŠคํŠธ๋ฆผ ์—ฐ์‚ฐ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด ๋ณ„๋„๋กœ ์กด์žฌํ•˜๋ฏ€๋กœ, ์ŠคํŠธ๋ฆผ์˜ ์—ฌ๋Ÿฌ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋”๋ผ๋„ ๊ธฐ์กด ์ž๋ฃŒ์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค.

โ€‹

4. ์ŠคํŠธ๋ฆผ์˜ ์—ฐ์‚ฐ์€ ์ค‘๊ฐ„ ์—ฐ์‚ฐ๊ณผ ์ตœ์ข… ์—ฐ์‚ฐ์ด ์žˆ๋‹ค.

์ŠคํŠธ๋ฆผ์— ์ค‘๊ฐ„ ์—ฐ์‚ฐ์€ ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์ ์šฉ๋  ์ˆ˜ ์žˆ๊ณ , ์ตœ์ข… ์—ฐ์‚ฐ์€ ๋งจ ๋งˆ์ง€๋ง‰์— ํ•œ ๋ฒˆ ์ ์šฉ๋œ๋‹ค. ๋งŒ์•ฝ ์ค‘๊ฐ„ ์—ฐ์‚ฐ์ด ์—ฌ๋Ÿฌ ๊ฐœ ํ˜ธ์ถœ๋˜์—ˆ๋”๋ผ๋„ ์ตœ์ข… ์—ฐ์‚ฐ์ด ํ˜ธ์ถœ๋˜์–ด์•ผ ์ŠคํŠธ๋ฆผ์˜ ์ค‘๊ฐ„ ์—ฐ์‚ฐ์ด ๋ชจ๋‘ ์ ์šฉ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ž๋ฃŒ๋ฅผ ์ •๋ ฌํ•˜๊ฑฐ๋‚˜ ๊ฒ€์ƒ‰ํ•˜๋Š” ์ค‘๊ฐ„ ์—ฐ์‚ฐ์ด ํ˜ธ์ถœ๋˜์–ด๋„ ์ตœ์ข… ์—ฐ์‚ฐ์ด ํ˜ธ์ถœ๋˜์ง€ ์•Š์œผ๋ฉด ์ •๋ ฌ์ด๋‚˜ ๊ฒ€์ƒ‰ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†๋‹ค. ์ด๋ฅผ '์ง€์—ฐ ์—ฐ์‚ฐ'์ด๋ผ๊ณ  ํ•œ๋‹ค.

โ€‹

โ€‹

โ€‹

*ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ธฐ๋Šฅ์„ ์ง€์ •ํ•˜๋Š” reduce( ) ์—ฐ์‚ฐ

reduce( ) ์—ฐ์‚ฐ์€ ๋‚ด๋ถ€์ ์œผ๋กœ ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์†Œ๋ชจํ•˜๋ฉด์„œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ์ง€์ •ํ•œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

โ€‹

ReduceTest.java

package stream;

import java.util.Arrays;
import java.util.function.BinaryOperator;

// BinaryOperator๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค ์ •์˜
class CompareString implements BinaryOperator<String> {
	@Override
	public String apply(String s1, String s2) { // reduce() ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ๋ถˆ๋ฆฌ๋Š” ๋ฉ”์„œ๋“œ. ๋‘ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๋น„๊ต
		if (s1.getBytes().length >= s2.getBytes().length)
			return s1;
		else
			return s2;
	}
}

public class ReduceTest {
	public static void main(String[] args) {
		String[] greetings = { "์•ˆ๋…•ํ•˜์„ธ์š”~~~", "hello", "Good morning", "๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค^^" };
		System.out.println(Arrays.stream(greetings).reduce("", (s1, s2) -> { // ๋žŒ๋‹ค์‹์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•
			if (s1.getBytes().length >= s2.getBytes().length)
				return s1;
			else
				return s2;
		}));

		String str = Arrays.stream(greetings).reduce(new CompareString()).get(); // BinaryOperator๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค ์‚ฌ์šฉ
		System.out.println(str);
	}
}

<์‹คํ–‰ ๊ฒฐ๊ณผ>

-์ดํ•ด๊ฐ€ ์ž˜ ์•ˆ๊ฐ. ๋‚ด์šฉ๋„ ์•„์ง ๋œ์ฑ„์›€. ๋‚˜์ค‘์— ๋‹ค์‹œ ๊ณต๋ถ€ํ•˜์ž.

โ€‹

โ€‹

โ€‹

*์ŠคํŠธ๋ฆผ์„ ํ™œ์šฉํ•˜์—ฌ ์—ฌํ–‰๊ฐ์˜ ์—ฌํ–‰ ๋น„์šฉ ๊ณ„์‚ฐํ•˜๊ธฐ

โ€‹

TravelCustomer.java

package stream;

public class TravelCustomer {
	private String name;  // ๊ณ ๊ฐ์ด๋ฆ„
	private int age;      // ๋‚˜์ด
	private int price;    // ๊ฐ€๊ฒฉ

	public TravelCustomer(String name, int age, int price) {
		this.name = name;
		this.age = age;
		this.price = price;
	}

	public String getName() {
		return name;
	}

	public int getAge() {
		return age;
	}

	public int getPrice() {
		return price;
	}

	public String toString() {
		return "name : " + name + "age : " + age + "price : " + price;
	}
}

 

 

TravelTest.java

package stream;

import java.util.ArrayList;
import java.util.List;

public class TravelTest {
	public static void main(String[] args) {
		TravelCustomer customerLee = new TravelCustomer("์ด์ˆœ์‹ ", 40, 100);
		TravelCustomer customerKim = new TravelCustomer("๊น€์œ ์‹ ", 20, 100);
		TravelCustomer customerHong = new TravelCustomer("ํ™๊ธธ๋™", 13, 50);

		List<TravelCustomer> customerList = new ArrayList<>();

		customerList.add(customerLee);
		customerList.add(customerKim);
		customerList.add(customerHong);

		System.out.println("== ๊ณ ๊ฐ ๋ช…๋‹จ ์ถ”๊ฐ€๋œ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅ ==");
		customerList.stream().map(c -> c.getName()).forEach(s -> System.out.println(s));

		int total = customerList.stream().mapToInt(c -> c.getPrice()).sum();
		System.out.println("์ด ์—ฌํ–‰ ๋น„์šฉ์€ : " + total + "์ž…๋‹ˆ๋‹ค.");

		System.out.println("== 20์„ธ ์ด์ƒ ๊ณ ๊ฐ ๋ช…๋‹จ ์ •๋ ฌํ•˜์—ฌ ์ถœ๋ ฅ ==");
		customerList.stream().filter(c -> c.getAge() >= 20).map(c -> c.getName()).sorted()
				.forEach(s -> System.out.println(s));
	}
}

<์‹คํ–‰ ๊ฒฐ๊ณผ>

์ด์ฒ˜๋Ÿผ ์ŠคํŠธ๋ฆผ์€ ๋งŽ์€ ๋ฐ์ดํ„ฐ ์†์—์„œ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์ ์šฉํ•˜๊ณ  ๊ณ„์‚ฐํ•˜๊ณ  ์ถœ๋ ฅํ•˜๋Š” ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

โ€‹

โ€‹

โ€‹

โ€‹์—ฐ์Šต๋ฌธ์ œ Q5) ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘ ์ •์ˆ˜๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋˜์–ด ์žˆ๋‹ค. ๋‘ ์ •์ˆ˜์˜ ํ•ฉ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋žŒ๋‹ค์‹์„ ๊ตฌํ˜„ํ•˜๊ณ  ํ˜ธ์ถœํ•ด ๋ณด๋ผ.

โ€‹

๋ฐ‘์— Calc ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ† ๋Œ€๋กœ ์ž‘์„ฑํ•˜๊ธฐ.

package test;

public interface Calc {
	public int add(int num1, int num2);
}

 

 

CalcTest.java

package test;

public class CalcTest {
	public static void main(String[] args) {
		Calc add = (x, y) -> x + y;
		System.out.println(add.add(10, 20));
	}
}

โ€‹<์‹คํ–‰ ๊ฒฐ๊ณผ>

โ€‹

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€