슀트림(Stream)


슀트림(Stream)


  • λ°°μ—΄, μ»¬λ ‰μ…˜μ„ λŒ€μƒμœΌλ‘œ 연산을 μˆ˜ν–‰

  • λ°°μ—΄, μ»¬λ ‰μ…˜μ— μ €μž₯λ˜μ–΄ μžˆλŠ” μš”μ†Œλ“€μ„ ν•˜λ‚˜μ”© μ°Έμ‘°ν•˜λ©° 반볡적인 처리λ₯Ό κ°€λŠ₯ν•˜κ²Œ 함

    • for-each 문을 μ‚¬μš©ν•˜λŠ” 경우 μ½”λ“œμ˜ 양이 λ§Žμ•„μ§€λ©΄ 둜직이 λ³΅μž‘ν•΄μ§€κ³ , λ©”μ†Œλ“œλ₯Ό λ‚˜λˆŒ 경우 루프λ₯Ό μ—¬λŸ¬λ²ˆ λ„λŠ” κ²½μš°κ°€ λ°œμƒν•  수 있음

    • 슀트림(Stream) μ‚¬μš© μ‹œ μ½”λ“œμ˜ 양을 쀄이고 κ°„κ²°ν•˜κ²Œ ν‘œν˜„ ν•  수 있으며, λ³‘λ ¬μ²˜λ¦¬κ°€ κ°€λŠ₯

  • 자료의 λŒ€μƒκ³Ό 관계없이 λ™μΌν•œ 연산을 μˆ˜ν–‰

  • β€˜μžλ£Œ μ²˜λ¦¬μ— λŒ€ν•œ 좔상화가 κ΅¬ν˜„λ˜μ—ˆλ‹€β€™κ³  함

  • ν•œ 번 μƒμ„±ν•˜κ³  μ‚¬μš©ν•œ μŠ€νŠΈλ¦Όμ€ μž¬μ‚¬μš© λΆˆκ°€ (λ‹€λ₯Έ μ—°μ‚° μˆ˜ν–‰μ„ μœ„ν•΄μ„œλŠ” μŠ€νŠΈλ¦Όμ„ λ‹€μ‹œ 생성해야 함)

  • μžλ£Œμ— λŒ€ν•œ 슀트림 생성 μ‹œ 슀트림이 μ‚¬μš©ν•˜λŠ” λ©”λͺ¨λ¦¬ 곡간은 λ³„λ„λ‘œ μƒμ„±λ˜λ―€λ‘œ 연산이 μˆ˜ν–‰λ˜μ–΄λ„ κΈ°μ‘΄ μžλ£Œμ— λŒ€ν•œ 변경은 λ°œμƒν•˜μ§€ μ•ŠμŒ

  • 슀트림 νŒŒμ΄ν”„λΌμΈ(Stream Pipeline)은 크게 μ„Έ κ°€μ§€λ‘œ ꡬ성

    • Source(μ†ŒμŠ€) : μ»¬λ ‰μ…˜, λ°°μ—΄, …

    • Intermediate (Stream-producing) Operations(쀑간 처리) : n(n>=0)개 / filter, map, …

    • Terminal (value- or side-effect-producing) Operation(μ’…κ²° 처리) : collect, reduce, …

  • 쀑간 μ—°μ‚° > μ—¬λŸ¬ 개 κ°€λŠ₯ / μ΅œμ’… μ—°μ‚° > λ§ˆμ§€λ§‰ ν•œ 번만 적용

  • μ΅œμ’… 연산이 ν˜ΈμΆœλ˜μ–΄μ•Ό 쀑간 연산에 λŒ€ν•œ μˆ˜ν–‰μ΄ 이루어지고 κ·Έ κ²°κ³Όκ°€ λ§Œλ“€μ–΄μ§€κΈ° λ•Œλ¬Έμ— μ—°μ‚° 쀑 쀑간 연산에 λŒ€ν•œ κ²°κ³Όλ₯Ό μ•Œ 수 μ—†μŒ > 이λ₯Ό β€˜μ§€μ—° 연산’이라고 함

Categories:

Java