๐ Java&Spring/๋ชจ๋์๋ฐ์ธ์ก์ (4) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [๋ชจ๋์๋ฐ์ธ์ก์ ] Stream ์คํธ๋ฆผ ํ์ฉ ์คํธ๋ฆผ ํ์ฉ ๋ช ์์ ๋ฐ๋ณต ๋์ filter์ collect ์ฐ์ฐ์ ์ง์ํ๋ ์คํธ๋ฆผ API๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ ์ปฌ๋ ์ ๋ฐ๋ณต์ ๋ด๋ถ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค. @Test void streamSample() { List nameList = new ArrayList(); nameList.add("๋ญ์ค"); nameList.add("๋ฃฐ๋ฃจ"); nameList.add("์ ์ฌ"); nameList.add("ํธ๋ฆฐ๋ค๋ฏธ์ด"); // ์ธ๋ถ ๋ฐ๋ณต List longNameList = new ArrayList(); for (String s : nameList) { if(s.length() > 5) { longNameList.add(s); } } // ๋ด๋ถ ๋ฐ๋ณต List longNameStreamList = nameList.stream.. [๋ชจ๋์๋ฐ์ธ์ก์ ] Stream ์คํธ๋ฆผ ์คํธ๋ฆผ (Stream) ์ปฌ๋ ์ (collections)๋ก ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํ๊ณ ์ฒ๋ฆฌํ ์ ์๋ค. ์ปฌ๋ ์ ์ ๋ชจ๋ ์๋ฐ ์ดํ๋ฆฌ์ผ์ด์ ์์ ์ฒ๋ฆฌํ๊ณ , ๋๋ถ๋ถ์ ํ๋ก๊ทธ๋๋ฐ ์์ ์ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์ค์ํ๋ค.ํ์ง๋ง ์์ง ์๋ฒฝํ ์ปฌ๋ ์ ์ฐ์ฐ์ ์ง์ํ๋ ค๋ฉด ๋ถ์กฑํ๋ค. ์คํธ๋ฆผ์ด๋ ๋ฌด์์ธ๊ฐ ์คํธ๋ฆผ๋ ์๋ฐ 8 API์ ์๋ก ์ถ๊ฐ๋ ๊ธฐ๋ฅ์ด๋ค. ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์ฝ๋๋ฅผ ์ง์๋ก ํํํ์ฌ ์ ์ธํ์ผ๋ก ์ปฌ๋ ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค. ์คํธ๋ฆผ์ ์ฌ์ฉํ๋ฉด ๋ฉํฐ์ค๋ ๋ ์ฝ๋๋ฅผ ๊ตฌํํ์ง ์์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ ์ ์๋ค. @Test @DisplayName("์๋ฆฌ ํด๋์ค ์ ๋ ฌํ๊ธฐ") void sortExample() { List menuList = new ArrayList(); menuList.add(new Dish(100,"๋ญ๊ฐ์ด์ด")); m.. [๋ชจ๋์๋ฐ์ธ์ก์ ] ๋๋ค (Lambda) ๋๋คํํ์์ ์ต๋ช ํด๋์ค์ฒ๋ผ ์ด๋ฆ์ด ์๋ ํจ์์ด๋ค. ๋ฉ์๋๋ฅผ ์ธ์๋ก ์ ๋ฌํ ์ ์๋ ์น๊ตฌ์ ๋๋ค. ๋๋ค ์ฉ์ด ์์ฒด๋ ๋ฏธ์ ๋ถํ ํ๊ณ์์ ์ ๋๋์๋ต๋๋ค. ์ค๋์ ๋๋ค ๋๋คํ๋ ๊ทธ ๋๋ค์ ๋ํด์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ชจ๋์๋ฐ์ธ์ก์ ์ฑ ์ฌ๋ํด์ 1. ๋๋ค๋ ๋ฌด์์ธ๊ฐ? ๋๋ค ํํ์: ๋ฉ์๋๋ก ์ ๋ฌํ ์ ์๋ ์ต๋ช ํจ์๋ฅผ ๋จ์ํํ ๊ฒ. ๋๋ค ํน์ง 1) ์ต๋ช ์ด๋ค. ๋ฉ์๋์ ๋ค๋ฅด๊ฒ ์ด๋ฆ์ด ์๋ค. 2) ํจ์์ด๋ค. ํน์ ํด๋์ค์ ์ข ์๋์ง ์๋๋ค. ๊ทธ๋์ ํจ์๋ผ๊ณ ๋ ๋ถ๋ฆผ. ํ์ง๋ง ๋ฉ์๋์ ํน์ง ๋ํ ๊ฐ์ง. 3) ์ ๋ฌ์ด ๊ฐ๋ฅํ๋ค. ๋๋ค ํํ์์ ๋ฉ์๋ ์ธ์๋ก ์ ๋ฌํ๊ฑฐ๋ ๋ณ์๋ก ์ ์ฅ ๊ฐ๋ฅ. 4) ๊ฐ๊ฒฐํ๋ค. ์ต๋ช ํด๋์ค์ฒ๋ผ ์ค๋ณต๋๊ฑฐ๋ ํด๋์ค ์์ฑ์ ์ํ ์ฝ๋๋ฅผ ๊ตฌํํ ํ์ ์์. cf) ๋ฉ์๋์ ํน์ง์? - ํ๋ผ๋ฏธํฐ ๋ฆฌ์คํธ, ๋ฐ๋,.. [๋ชจ๋์๋ฐ์ธ์ก์ ] ๋์ ํ๋ผ๋ฏธํฐ(Behavior Parameter) ๋์ ํ๋ผ๋ฏธํฐ๋ฅผ ์์ญ๋๊น? ํ๋ก๊ทธ๋๋ฐ ์ ์ฌ์ฉํ๋ "๋์"์ ์๋์ ๊ฐ์ ๊ฒ์ ์๋ฏธํฉ๋๋ค. a์ b๋ฅผ ๊ณฑํ๋ ํจ์๊ฐ ์๋ค๊ณ ํด๋ด ์๋ค. def multiply_numbers(a, b): result = a * b return result ์ด ํจ์๋ ํ๋ผ๋ฏธํฐ๋ก ๋ฐ์ ๊ณฑํ๋ "๋์"์ ํ๋๋ฐ์ฉ, a์ b์ ๊ฐ์ ๋ฐ๋ผ์ multiply_numbers ํจ์์ ๊ฒฐ๊ณผ ๊ฐ์ ๋ฌ๋ผ์ง๊ฒ ๋ฉ๋๋ค. ์ด๋, a์ b๋ฅผ ๋์ ํ๋ผ๋ฏธํฐ๋ผ๊ณ ํ๋ ๊ฑฐ์์ด~ result1 = multiply_numbers(2, 3) # a=2, b=3์ ์ ๋ฌํ์ฌ 2 * 3 = 6์ด ๋ฐํ๋จ result2 = multiply_numbers(5, 7) # a=5, b=7์ ์ ๋ฌํ์ฌ 5 * 7 = 35๊ฐ ๋ฐํ๋จ ์ด๋ ๊ฒ ๋ง์ด์ ธ. a์ b์ ๊ฐ์ ๋ฐ๋ผ resul.. ์ด์ 1 ๋ค์