๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ๋ฐฑ์—”๋“œ/Java

[ch.14] ์ŠคํŠธ๋ฆผ์˜ ์ค‘๊ฐ„์—ฐ์‚ฐ

by OR15A 2023. 11. 15.

 

์ŠคํŠธ๋ฆผ ์ž๋ฅด๊ธฐ : skip, limit

  • ์ŠคํŠธ๋ฆผ์˜ ์ผ๋ถ€๋ฅผ ์ž˜๋ผ๋‚ผ ๋•Œ ์‚ฌ์šฉํ•จ.
  • skip( ): n๊ฐœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ
  • limit( ): ์š”์†Œ๋ฅผ n๊ฐœ๋กœ ์ œํ•œํ•˜๊ธฐ
  • ๊ธฐ๋ณธํ˜• ์ŠคํŠธ๋ฆผ์—๋„ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Œ.

 

์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ ๊ฑธ๋Ÿฌ๋‚ด๊ธฐ : distinct, filter

  • distinct( ): ์ค‘๋ณต ์ œ๊ฑฐ
  • filter( ): ์ฃผ์–ด์ง„ ์กฐ๊ฑด์— ๋งž๋Š” ๊ฒƒ๋งŒ ๋‚จ๊น€. ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ Predicate๊ฐ€ ํ•„์š”ํ•จ.
  • ์—ฐ์‚ฐ๊ฒฐ๊ณผ๊ฐ€ boolean์ธ ๋žŒ๋‹ค์‹๋„ ๊ฐ€๋Šฅํ•จ. ๋‹ค๋ฅธ ์กฐ๊ฑด์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ. ex) ์ŠคํŠธ๋ฆผ.filter(A).filter(B).filter(C)

 

์ •๋ ฌํ•˜๊ธฐ : sorted, Comparator์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์„œ๋“œ

  • sorted( ): ์ง€์ •๋œ Comparator๋กœ ์ŠคํŠธ๋ฆผ์„ ์ •๋ ฌํ•จ. Comparator๋Œ€์‹  int๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋žŒ๋‹ค์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ. Comparator์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์š”์†Œ์˜ ๊ฐ€๋ณธ์ •๋ ฌ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•จ. ๋‹จ, ์š”์†Œ๊ฐ€ Comparable์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๊ฐ€ ์•„๋‹ˆ๋ฉด ์˜ˆ์™ธ๋ฐœ์ƒ.

  • ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๊ฐ€ Comparable์„ ๊ตฌํ˜„ํ•œ ๊ฒฝ์šฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” 1, ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ถ”๊ฐ€์ ์ธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ •๋ ฌ๊ธฐ์ค€์„ ๋”ฐ๋กœ ์ง€์ •ํ•ด์ค˜์•ผํ•จ.
  • ์ •๋ ฌ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” thenComparing( )์‚ฌ์šฉํ•จ.

 

์กฐํšŒํ•˜๊ธฐ : peek

  • peek( ): ์—ฐ์‚ฐ๊ณผ ์—ฐ์‚ฐ ์‚ฌ์ด์˜ ์ค‘๊ฐ„์ ๊ฒ€์‹œ ์‚ฌ์šฉํ•จ.
  • ์ŠคํŠธ๋ฆผ ์š”์†Œ๋ฅผ ์†Œ๋ชจํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์—ฐ์‚ฐ ์‚ฌ์ด์— ์—ฌ๋Ÿฌ๋ฒˆ ๋ผ์›Œ ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ. filter( )์ด๋‚˜ map์˜ ๊ฒฐ๊ณผ ํ™•์ธ์— ์œ ์šฉํ•จ.

 

๋ณ€ํ™˜ํ•˜๊ธฐ : map

  • ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ ์ค‘ ์›ํ•˜๋Š” ํ•„๋“œ๋งŒ ๋ฝ‘์•„๋‚ด๊ฑฐ๋‚˜, ํŠน์ •ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉํ•จ.
  • map( ): ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ž…๋ ฅTํƒ€์ž…, ์ถœ๋ ฅRํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ง€์ •ํ•จ.
    • ex) ์ŠคํŠธ๋ฆผ.map(File::getName);
  • ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ฆผ์— ์—ฌ๋Ÿฌ๋ฒˆ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
  • ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๋ฅผ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธํ˜• ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ๋” ์œ ์šฉํ•จ.
  • mapToInt( ), mapToLong( ), mapToDouble( )

 

๋ณ€ํ™˜ํ•˜๊ธฐ(2) : flatMap

  • Stream< T[] >๋ฅผ Stream< T >๋กœ ๋ณ€ํ™˜ํ•จ.
  • ์ŠคํŠธ๋ฆผ์˜ ์š”์†Œ๊ฐ€ ๋ฐฐ์—ด์ด๊ฑฐ๋‚˜, map( )์˜ ์—ฐ์‚ฐ๊ฒฐ๊ณผ๊ฐ€ ๋ฐฐ์—ด์ผ ๋•Œ ์‚ฌ์šฉํ•จ.
  • ์ŠคํŠธ๋ฆผ์˜ ํƒ€์ž…์ด Stream< T[] >์ธ ๊ฒฝ์šฐ Stream< T >๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์ด ๋” ํŽธ๋ฆฌํ•  ๋•Œ๊ฐ€ ์žˆ์–ด์„œ map( )๋Œ€์‹  flatMap( )์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.
  • ์ŠคํŠธ๋ฆผ์„ ์š”์†Œ๋กœ ํ•˜๋Š” ์ŠคํŠธ๋ฆผ์„ ํ•˜๋‚˜์˜ ์ŠคํŠธ๋ฆผ์œผ๋กœ ํ•ฉ์น ๋•Œ๋„ flatMap( )์„ ์‚ฌ์šฉํ•จ.

 

๊ธฐ๋ณธํ˜• ์ŠคํŠธ๋ฆผ์€ ์ˆซ์ž๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ ํŽธ๋ฆฌํ•œ ๋ฉ”์„œ๋“œ๋“ค์„ ์ œ๊ณตํ•จ.

  • sum( ), average( ), max( ), min( ),
  • ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฉ”์„œ๋“œ๋“ค์€ ์ตœ์ข…์—ฐ์‚ฐ์ด์–ด์„œ ํ˜ธ์ถœ ํ›„์— ์ŠคํŠธ๋ฆผ์ด ๋‹ซํž˜.
  • sum( )๊ณผ average( )๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด summaryStastics( ).