๐Ÿ“– 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..