STREAM

์ŠคํŠธ๋ฆผ์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

์ŠคํŠธ๋ฆผ(Stream)์€ ์ž๋ฐ” 8 API์—์„œ ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์ด๋‹ค.

์ŠคํŠธ๋ฆผ์„ ์ด์šฉํ•˜๋ฉด ์„ ์–ธํ˜•(๋ฐ์ดํ„ฐ๋ฅผ ์ž„์‹œ ๊ตฌํ˜„ ์ฝ”๋“œ ๋Œ€์‹  ์งˆ์˜๋ฃŒ ํ‘œํ˜„)์œผ๋กœ ์ปฌ๋ ‰์…˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•„๋„ ๋ฐ์ดํ„ฐ๋ฅผ ํˆฌ๋ช…ํ•˜๊ฒŒ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์กด ์ฝ”๋“œ(์ž๋ฐ”7)

List<Dish> lowCaloricDishes = new ArrayList<>();

for(Dish dish : menu) {
    if(dish.getCalories() < 400) {
        lowCaloricDishes.add(dish);
    }
}
Collections.sort(lowCaloricDishes, new Comparator<Dish>() {
    @Override
    public int compare(Dish d1, Dish d2) {
        return Integer.compare(d1.getCalories(), d2.getCalories());
    }
});
List<String> lowCaloricDishesName = new ArrayList<>();
for(Dish dish : lowCaloricDishes) {
    lowCaloricDishesName.add(dish.getName());
}
return lowCaloricDishesName;

์œ„ ์ฝ”๋“œ์—์„œ๋Š” lowCaloricDishes๋ผ๋Š” ์ปจํ…Œ์ด๋„ˆ ์—ญํ• ๋งŒ ์ˆ˜ํ–‰ํ•˜๋Š” '๊ฐ€๋น„์ง€ ๋ณ€์ˆ˜'๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค.

์ž๋ฐ” 8์—์„œ ์ด๋Ÿฐ ์„ธ๋ถ€ ๊ตฌํ˜„์€ ๋ชจ๋‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์ตœ์‹ ์ฝ”๋“œ(์ž๋ฐ”8)

List<String> lowCaloricDishesName = menu.stream()
    .filter(d -> d.getCalories() < 400)
    .sorted(comparing(Dish::getCalories))
    .map(Dish::getName)
    .collect(toList());

์ŠคํŠธ๋ฆผ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฃจํ”„์™€ ์กฐ๊ฑด๋ฌธ ๋“ฑ์˜ ์ œ์–ด ๋ธ”๋ก์„ ์‚ฌ์šฉํ•  ํ•„์š” ์—†์ด "์ €์นผ๋กœ๋ฆฌ์˜ ์š”๋ฆฌ๋งŒ ์„ ํƒํ•˜๋ผ"์™€ ๊ฐ™์€ ๋™์ž‘์˜ ์ˆ˜ํ–‰์„ ์„ ์–ธํ˜•์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ๋žŒ๋‹ค ์ฝ”๋“œ๋ฅผ ํ™œ์šฉํ•ด์„œ ๋ณ€ํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ์— ์‰ฝ๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

filter, sorted, map, collect ๊ฐ™์€ ์—ฌ๋Ÿฌ ๋นŒ๋”ฉ ๋ธ”๋ก์„ ์—ฐ์‚ฐ์„ ์—ฐ๊ฒฐํ•ด์„œ ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์ด๋“ค์€ ๋ฉ€ํ‹ฐ์ฝ”์–ด ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๊ตฌํ˜„๋˜์–ด ์žˆ์–ด ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ ์‹œ์— ์Šค๋ ˆ๋“œ์™€ ๋ฝ์„ ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

์ž๋ฐ” 8์˜ ์ŠคํŠธ๋ฆผ API์˜ ํŠน์ง•์„ ๋‹ค์Œ์ฒ˜๋Ÿผ ์š”์•ฝํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์„ ์–ธํ˜• : ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์ง„๋‹ค.

  • ์กฐ๋ฆฝํ•  ์ˆ˜ ์žˆ์Œ : ์œ ์—ฐ์„ฑ์ด ์ข‹์•„์ง„๋‹ค.

  • ๋ณ‘๋ ฌํ™” : ์„ฑ๋Šฅ์ด ์ข‹์•„์ง„๋‹ค.


4.2 ์ŠคํŠธ๋ฆผ ์‹œ์ž‘ํ•˜๊ธฐ

์ŠคํŠธ๋ฆผ์ด๋ž€ '๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์—ฐ์‚ฐ์„ ์ง€์›ํ•˜๋„๋ก ์†Œ์Šค์—์„œ ์ถ”์ถœ๋œ ์—ฐ์†๋œ ์š”์†Œ'๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ์ •์˜๋ฅผ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด์ž.

  • ์—ฐ์†๋œ ์š”์†Œ ์ปฌ๋ ‰์…˜๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ŠคํŠธ๋ฆผ์€ ํŠน์ • ์š”์†Œ ํ˜•์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์—ฐ์†๋œ ๊ฐ’ ์ง‘ํ•ฉ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ปฌ๋ ‰์…˜์€ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฏ€๋กœ ์‹œ๊ฐ„๊ณผ ๊ณต๊ฐ„์˜ ๋ณต์žก์„ฑ๊ณผ ๊ด€๋ จ๋œ ์š”์†Œ ์ €์žฅ ๋ฐ ์ ‘๊ทผ ์—ฐ์‚ฐ์ด ์ฃผ๋ฅผ ์ด๋ฃจ๋Š” ๋ฐ˜๋ฉด, ์ŠคํŠธ๋ฆผ์€ filter, sorted, map์ฒ˜๋Ÿผ ํ‘œํ˜„ ๊ณ„์‚ฐ์‹์ด ์ฃผ๋ฅผ ์ด๋ฃฌ๋‹ค. ์ฆ‰, ์ปฌ๋ ‰์…˜์˜ ์ฃผ์ œ๋Š” ๋ฐ์ดํ„ฐ์ด๊ณ  ์ŠคํŠธ๋ฆผ์˜ ์ฃผ์ œ๋Š” ๊ณ„์‚ฐ์ด๋‹ค.

  • ์†Œ์Šค ์ŠคํŠธ๋ฆผ์€ ์ปฌ๋ ‰์…˜, ๋ฐฐ์—ด, I/O ์ž์› ๋“ฑ์˜ ๋ฐ์ดํ„ฐ ์ œ๊ณต ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์†Œ๋น„ํ•œ๋‹ค. ์ •๋ ฌ๋œ ์ปฌ๋ ‰์…˜์œผ๋กœ ์ŠคํŠธ๋ฆผ์„ ์ƒ์„ฑํ•˜๋ฉด ์ •๋ ฌ์ด ๊ทธ๋Œ€๋กœ ์œ ์ง€๋œ๋‹ค.

  • ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์—ฐ์‚ฐ ์ŠคํŠธ๋ฆผ์€ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ง€์›ํ•˜๋Š” ์—ฐ์‚ฐ๊ณผ ๋น„์Šทํ•œ ์—ฐ์‚ฐ์„ ์ง€์›ํ•œ๋‹ค. ์ŠคํŠธ๋ฆผ ์—ฐ์‚ฐ์€ ์ˆœ์ฐจ์  ๋˜๋Š” ๋ณ‘๋ ฌ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜ํ•œ ์ŠคํŠธ๋ฆผ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘๊ฐ€์ง€ ์ค‘์š” ํŠน์ง•์ด ์žˆ๋‹ค.

  • ํŒŒ์ดํ”„๋ผ์ด๋‹ ๋Œ€๋ถ€๋ถ„์˜ ์ŠคํŠธ๋ฆผ ์—ฐ์‚ฐ์€ ์ŠคํŠธ๋ฆผ ์—ฐ์‚ฐ๋ผ๋ฆฌ ์—ฐ๊ฒฐํ•ด์„œ ์ปค๋‹ค๋ž€ ํŒŒ์ดํ”„ ๋ผ์ธ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ์ŠคํŠธ๋ฆผ ์ž์‚ฐ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ทธ๋•๋ถ„์— ๊ฒŒ์œผ๋ฆ„(jaziness), ์‡ผํŠธ์„œํ‚ท(short circuiting) ๊ฐ™์€ ์ตœ์ ํ™”๋„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

  • ๋‚ด๋ถ€ ๋ฐ˜๋ณต ๋ฐ˜๋ณต์ž๋ฅผ ์ด์šฉํ•ด์„œ ๋ช…์‹œ์ ์œผ๋กœ ๋ฐ˜๋ณตํ•˜๋Š” ์ปฌ๋ ‰์…˜๊ณผ ๋‹ฌ๋ฆฌ ์ŠคํŠธ๋ฆผ์€ ๋‚ด๋ถ€ ๋ฐ˜๋ณต์„ ์ง€์›ํ•œ๋‹ค.

์„ค๋ช…ํ•œ ๋‚ด์šฉ์„ ์˜ˆ์ œ๋กœ ํ™•์ธํ•ด๋ณด์ž.

List<String> treeHighCaloricDishesName = 
  menu.stream() // ๋ฉ”๋‰ด์—์„œ ์ŠคํŠธ๋ฆผ์„ ์–ป๋Š”๋‹ค.
    .filter(d -> d.getCalories() > 300) // ํŒŒ์ดํ”„๋ผ์ธ ์—ฐ์‚ฐ ๋งŒ๋“ค๊ธฐ(๊ณ ์นผ๋กœ๋ฆฌ ์š”๋ฆฌ ํ•„ํ„ฐ๋ง)
    .map(Dish::getName) // ์š”๋ฆฌ๋ช… ์ถ”์ถœ
    .limit(3) // ์„ ์ฐฉ์ˆœ ์„ธ ๊ฐœ๋งŒ ์„ ํƒ
    .collect(toList()); // ๊ฒฐ๊ณผ๋ฅผ ๋‹ค๋ฅธ ๋ฆฌ์ŠคํŠธ๋กœ ์ €์žฅ
  • filter : ๋žŒ๋‹ค๋ฅผ ์ธ์ˆ˜๋กœ ๋ฐ›์•„ ์ŠคํŠธ๋ฆผ์—์„œ ํŠน์ • ์š”์†Œ๋ฅผ ์ œ์™ธ์‹œํ‚จ๋‹ค.

  • map : ๋žŒ๋‹ค๋ฅผ ์ด์šฉํ•ด์„œ ํ•œ ์š”์†Œ๋ฅผ ๋‹ค๋ฅธ ์š”๋กœ์†Œ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•œ๋‹ค.

  • limit : ์ •ํ•ด์ค€ ๊ฐœ์ˆ˜ ์ด์ƒ์˜ ์š”์†Œ๊ฐ€ ์ŠคํŠธ๋ฆฌ์— ์ €์žฅ๋˜์ง€ ๋ชปํ•˜๊ฒŒ ์ŠคํŠธ๋ฆผ ํฌ๊ธฐ๋ฅผ ์ถ•์†Œ truncate ํ•œ๋‹ค.

  • collect : ๋‹ค์–‘ํ•œ ๋ณ€ํ™˜ ๋ฐฉ๋ฒ•์„ ์ธ์ˆ˜๋กœ ๋ฐ›์•„ ์ŠคํŠธ๋ฆผ์— ๋ˆ„์ ๋œ ์š”์†Œ๋ฅผ ํŠน์ • ๊ฒฐ๊ณผ๋กœ(๋‹ค๋ฅธ ํ˜•์‹์œผ๋กœ) ๋ณ€ํ™˜ํ•œ๋‹ค.


4.3 ์ŠคํŠธ๋ฆผ๊ณผ ์ปฌ๋ ‰์…˜

์ปฌ๋ ‰์…˜๊ณผ ์ŠคํŠธ๋ฆผ ๋ชจ๋‘ ์—ฐ์†๋œ ํ˜•์‹์˜ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ '์—ฐ์†๋œ'์ด๋ผ๋Š” ํ‘œํ˜„์€ ์ˆœ์„œ์™€ ์ƒ๊ด€์—†์ด ์•„๋ฌด ๊ฐ’์—๋‚˜ ์ ‘์†ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ’์— ์ ‘๊ทผํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

์ปฌ๋ ‰์…˜๊ณผ ์ŠคํŠธ๋ฆผ์˜ ๊ฐ€์žฅ ํฐ ์ฐจ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์–ธ์ œ ๊ณ„์‚ฐํ•˜๋Š๋ƒ์ด๋‹ค.

์ปฌ๋ ‰์…˜์€ ํ˜„์žฌ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ํฌํ•จํ•˜๋Š” ๋ชจ๋“  ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค.

์ปฌ๋ ‰์…˜์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ปฌ๋ ‰์…˜์˜ ๋ชจ๋“  ์š”์†Œ๋Š” ์ปฌ๋ ‰์…˜์— ์ถ”๊ฐ€ํ•˜๊ธฐ ์ „์— ๊ณ„์‚ฐ๋˜์–ด์•ผ ํ•œ๋‹ค.

๋ฐ˜๋ฉด ์ŠคํŠธ๋ฆผ์€ ์ด๋ก ์ ์œผ๋กœ ์š”์ฒญํ•  ๋•Œ๋งŒ ์š”์†Œ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๊ณ ์ •๋œ ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค.

์ŠคํŠธ๋ฆผ์—๋Š” ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์—†๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ŠคํŠธ๋ฆผ์€ ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž ๊ด€๊ณ„๋ฅผ ํ˜•์„ฑํ•œ๋‹ค.

์ปฌ๋ ‰์…˜์ด DVD์— ์ €์žฅ๋œ ์˜ํ™”๋ผ๋ฉด, ์ŠคํŠธ๋ฆผ์€ ์ธํ„ฐ๋„ท์œผ๋กœ ์ŠคํŠธ๋ฆฌ๋ฐํ•˜๋Š” ์˜ํ™”๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

4.3.1 ๋”ฑ ํ•œ๋ฒˆ๋งŒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜๋ณต์ž์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ŠคํŠธ๋ฆผ๋„ ๋”ฑ ํ•œ๋ฒˆ๋งŒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ํƒ์ƒ‰๋œ ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๋Š” ์†Œ๋น„๋œ๋‹ค.

ํ•œ ๋ฒˆ ํƒ์ƒ‰ํ•œ ์š”์†Œ๋ฅผ ๋‹ค์‹œ ํƒ์ƒ‰ํ•˜๋ ค๋ฉด ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ ์†Œ์Šค์—์„œ ์ƒˆ๋กœ์šด ์ŠคํŠธ๋ฆผ์„ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ I/O์ฑ„๋„์ฒ˜๋Ÿผ ๋ฐ˜๋ณต ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์†Œ์Šค๋ผ๋ฉด ์ƒˆ๋กœ์šด ์ŠคํŠธ๋ฆผ์„ ๋‹ค์‹œ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค.

4.3.2 ์™ธ๋ถ€ ๋ฐ˜๋ณต๊ณผ ๋‚ด๋ถ€ ๋ฐ˜๋ณต

์ปฌ๋ ‰์…˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด for-each ๋“ฑ์„ ์‚ฌ์šฉํ•ด์„œ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์š”์†Œ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ์™ธ๋ถ€ ๋ฐ˜๋ณต์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋ฐ˜๋ฉด ์ŠคํŠธ๋ฆผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ฐ˜๋ณต์„ ์•Œ์•„์„œ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ฒฐ๊ณผ ์ŠคํŠธ๋ฆผ๊ฐ’์„ ์–ด๋”˜๊ฐ€์— ์ €์žฅํ•ด์ฃผ๋Š” ๋‚ด๋ถ€ ๋ฐ˜๋ณต์„ ์‚ฌ์šฉํ•œ๋‹ค.

๋‚ด๋ถ€ ๋ฐ˜๋ณต์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘์—…์„ ํˆฌ๋ช…ํ•˜๊ฒŒ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋” ์ตœ์ ํ™”๋œ ๋‹ค์–‘ํ•œ ์ˆœ์„œ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.


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

์ŠคํŠธ๋ฆผ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์—ฐ์‚ฐ์„ ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ค‘๊ฐ„ ์—ฐ์‚ฐ : filter, map, limit ๋“ฑ์œผ๋กœ ์„œ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ํ˜•์„ฑํ•œ๋‹ค.

  • ์ตœ์ข… ์—ฐ์‚ฐ : collect๋กœ ํŒŒ์ดํ”„๋ผ์ธ์„ ์‹คํ–‰ํ•œ ๋‹ค์Œ ๋‹ซ๋Š”๋‹ค.

4.4.1 ์ค‘๊ฐ„ ์—ฐ์‚ฐ

์ค‘๊ฐ„ ์—ฐ์‚ฐ์€ ๋‹ค๋ฅธ ์ŠคํŠธ๋ฆผ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ์ค‘๊ฐ„ ์—ฐ์‚ฐ์„ ์—ฐ๊ฒฐํ•ด ์งˆ์˜๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

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

์ŠคํŠธ๋ฆผ์˜ ๊ฒŒ์œผ๋ฅธ ํŠน์„ฑ ๋•๋ถ„์— ์‡ผํŠธ์„œํ‚ท, ๋ฃจํ”„ ํ“จ์ „ ๋“ฑ์˜ ์ตœ์ ํ™” ํšจ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.(๋‹ค์Œ ์žฅ์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•œ๋‹ค)

4.4.2 ์ตœ์ข… ์—ฐ์‚ฐ

์ตœ์ข… ์—ฐ์‚ฐ์€ ์ŠคํŠธ๋ฆผ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•œ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด List, Integer, void ๋“ฑ ์ŠคํŠธ๋ฆผ ์ด์™ธ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด forEach๋Š” ์ŠคํŠธ๋ฆผ์˜ ๊ฐ ์š”์†Œ์— ๋žŒ๋‹ค๋ฅผ ์ ์šฉํ•œ ๋‹ค์Œ void๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ตœ์ข… ์—ฐ์‚ฐ์ด๋‹ค.

menu.stream().forEach(System.out::println);

Last updated