Skip to content

Latest commit

ย 

History

History
37 lines (27 loc) ยท 1.38 KB

File metadata and controls

37 lines (27 loc) ยท 1.38 KB

map vs flatMap

Java Stream API

  • map๊ณผ flatMap์€ ๋ชจ๋‘ stream api์˜ ์ผ์ข…
  • ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘ map์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ผ๋Š” ์ ์—์„œ๋Š” ๋™์ผ
    • map์˜ ์—ญํ• : ์ŠคํŠธ๋ฆผ ๋‚ด ์š”์†Œ๋“ค์— ํŠน์ • ์—ฐ์‚ฐ์„ ์ ์šฉํ•œ ๊ฒฐ๊ณผ ์ŠคํŠธ๋ฆผ์„ ๋ฐ˜ํ™˜
  • ๊ทธ๋Ÿฌ๋‚˜ flatMap์€ flatten์˜ ์†์„ฑ์„ ๊ฐ€์ง€๋Š” map ์—ฐ์‚ฐ ๋ฉ”์„œ๋“œ

map

int[][] numbers = new int[][]{
        {1, 11}, {2, 22}, {3, 33}, {4, 44}
};

// 1. map
System.out.println(Arrays.stream(numbers).map(Arrays::stream).toList().size()); // 4
  • ์œ„์™€ ๊ฐ™์€ map ์—ฐ์‚ฐ์€ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ numbers ์ด์ฐจ์› ๋ฐฐ์—ด์˜ ๊ตฌ์„ฑ์š”์†Œ์ธ {1, 11}, {2, 22}, {3, 33}, {4, 44}์˜ ์ŠคํŠธ๋ฆผ์„ ๊ฐ๊ฐ ๋ฐ˜ํ™˜
  • ๋”ฐ๋ผ์„œ ๊ฒฐ๊ณผ List๋Š” ์œ„์˜ 4๊ฐ€์ง€ array ์š”์†Œ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ๋กœ size๊ฐ€ 4

flatMap

int[][] numbers = new int[][]{
        {1, 11}, {2, 22}, {3, 33}, {4, 44}
};

// 2. flatMap
System.out.println(Arrays.stream(numbers).flatMapToInt(Arrays::stream).boxed().toList().size()); // 8
  • ์œ„์™€ ๊ฐ™์€ flatMap ์—ฐ์‚ฐ์€ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ๋ฐฐ์—ด์˜ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋‹จ์ผ ์š”์†Œ๋“ค์˜ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜
  • ์ฆ‰, 1, 11์ด ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ฐ˜ํ™˜๋˜๊ณ  2, 22๊ฐ€ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ฐ˜ํ™˜๋˜์–ด ๊ทธ ๋’ค์— ์—ฐ๊ฒฐ๋˜๊ณ  ์ด๋Ÿฌํ•œ ๊ณผ์ •์ด ๋ฐ˜๋ณต๋จ
  • ๋”ฐ๋ผ์„œ ๊ฒฐ๊ณผ๋Š” 1, 11, 2, 22, 3, 33, 4, 44๊ฐ€ wrapping๋˜์–ด ๋‹ด๊ฒจ์ ธ์žˆ๋Š” List ํƒ€์ž…์˜ ๋ฆฌ์ŠคํŠธ๋กœ size๊ฐ€ 8