๐ฅDEV/Java || Spring15 ํ๋ก์/ํ๋ก์ ๊ตฌํ์์ ๋ง์ฃผ์น ๋์์ฑ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ํ๋ก์ ์๋ฅผ ์ฆ๊ฐํ๊ฑฐ๋ ์ค์ผ๋ ๋์์ฑ ๋ฌธ์ ์ ๋ํด ๊ณ ๋ฏผํ๋ ๋ด์ฉ์ ๋๋ค. ํ์ต๊ณผ์ ์์ ์์ฑ๋์๊ธฐ ๋๋ฌธ์ ์๋ชป๋ ๋ด์ฉ์ด ์์ ์ ์์ต๋๋ค. 1. ๋์์ฑ ๋ฌธ์ ํ์ฌ ํ๋ก์ฐ/์ธํ๋ก์ฐ ๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๋ก์ง์ ์๋์ ๊ฐ์ต๋๋ค. ํ๋ก์/์ธํ๋ก์ฐ์ ํ๊ฒ๋๋ฉด ํ์ ํ ์ด๋ธ์ด ๊ฐ์ง๊ณ ์๋ ํ๋ก์ ์ปฌ๋ผ์ ๊ฐ์ด 1 ์ฆ๊ฐํ๊ฑฐ๋ ๊ฐ์ํ๋ ๋ก์ง์ธ๋ฐ์, ์ด ๋ถ๋ถ์์ ๋์์ฑ ์ด์๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ฌ๊ธฐ์ ์ ํ์ ํ ์ด๋ธ์ด ํ๋ก์ ์นด์ดํธ๋ฅผ ๊ฐ์ง๊ณ ์๋์ง์ ๋ํด ์๋ฌธ์ด ์๊ธธ ์ ์์ต๋๋ค. ์ด๋ ์กฐํ์ ํธ์์ฑ์ ์ํด ์ด๋ ๊ฒ ์ค๊ณํ์ต๋๋ค. ํ ํ์์ ๋ช๋ช ์ ํ๋ก์/ํ๋ก์ ์๋ฅผ ์๊ธฐ ์ํด ์๋ ์กฐ์ธ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฐพ์์ ๊ฐฏ์๋ฅผ ์ธ๊ฑฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ง์ ์นด์ดํธ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ ค์ผ ํ๋๋ฐ, ์ด๋ ๊ฒ ๋งค๋ฒ ์กฐ์ธ/์นด์ดํธ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฆฌ๋ ๊ฒ์ .. 2022. 9. 19. ๋๋ฉ์ธ ๋ก์ง์ด ํญ์ ์ข์๊น? ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ JPA๋ฅผ ํ์ฉํ ๋๋ฉ์ธ ๋ก์ง์ด ํญ์ ์ข์๊น? ์ ๋ํด ๊ณ ๋ฏผํ๋ ๋ด์ฉ์ธ๋ฐ์ ๊ฐ๋ตํ๊ฒ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค. **์ฝ๋์๋ ์ ๋ต์ด ์๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ํ๋์ ๋ฌธ์ ํด๊ฒฐ ๊ด์ ์ด๋ผ๊ณ ๋ด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. - ๋๋ฉ์ธ ๋ก์ง(JPA) ์ผ๋ก ์ข์์๋ฅผ ๊ตฌํํ์ ๊ฒฝ์ฐ - ๊ฐ์ ๋ฐ ๋๋ฉ์ธ ๋ก์ง์ด ์์ข์๋ - Conclusion 1. ์ข์์ ๋๋ ๋์ง๋ฅผ JPA์กฐ์ธ์ผ๋ก ๊ฐ์ ธ์ฌ ๊ฒฝ์ฐ ๋๋ฉ์ธ ๋ก์ง์ ํ์ฉํด (๊ฒ์๊ธ์) ์ข์์๋ฅผ ์ถ๊ฐ/์ญ์ ํ๊ธฐ ์ํด์๋ ์๋์ ๊ฐ์ ๋ก์ง์ด ํ์ํฉ๋๋ค. ์ข์์๋ฅผ ํ ๋ฒ๋ ์ ๋๋ ๋ค๋ฉด ์ข์์๋ฅผ ์ถ๊ฐํ๊ณ , ์ด๋ฏธ ๋๋ ๋ค๋ฉด ๋๋ ๋ ์ข์์๊ฐ ์ทจ์๋๋ ๋ก์ง์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. contains( ) ๋ฉ์๋๋ฅผ ์คํํ๊ธฐ ์ํด์๋ ๋ด๋ถ์ ์ด๋ค ๊ฐ์ด ์๋์ง ์์์ผ ํ๊ธฐ ๋๋ฌธ์ JPA.. 2022. 9. 19. [์ดํํฐ๋ธ์๋ฐ] Item 16. ์ด ๊ธ์ ์ธ์ฌ์ดํธ์ EffectiveJava 3rd Edition์ ๊ณต๋ถํ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค. ์ฑ ์ ๋ฐํ์ผ๋ก ์ถ๊ฐ์ ์ธ ๋ด์ฉ์ ๋ง๋ถ์์ต๋๋ค. ์ ๋ฆฌ๋ ๋ด์ฉ ์ด์ธ์๋ ์ข์ ๋ด์ฉ์ด ๋ง์ด ๋ด๊ฒจ ์๊ธฐ ๋๋ฌธ์ ๊ผญ ์ฑ ์ ๊ตฌ๋งคํด์ ๊ณต๋ถํด ๋ณด์ค ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค. ์ดํํฐ๋ธ ์๋ฐ Effective Java 3/E - YES24 ์๋ฐ ํ๋ซํผ ๋ชจ๋ฒ ์ฌ๋ก ์๋ฒฝ ๊ฐ์ด๋ - Java 7, 8, 9 ๋์์๋ฐ 6 ์ถ์ ์งํ ์ถ๊ฐ๋ ใ์ดํํฐ๋ธ ์๋ฐ 2ํใ ์ดํ๋ก ์๋ฐ๋ ์ปค๋ค๋ ๋ณํ๋ฅผ ๊ฒช์๋ค. ๊ทธ๋์ ์กธํธ์์ ๋น๋๋ ์ด ์ฑ ๋ ์๋ฐ ์ธ์ด์ ๋ผ์ด๋ธ www.yes24.com 1. package-private ์๋ ๊ทธ๋ฆผ์์ ์ผ์ชฝ๊ณผ ๊ฐ์ ํด๋์ค๋ ๋ฐ์ดํฐ ํ๋์ ์ง์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ์บก์ํ์ ์ด์ ์ ์ ๊ณตํ์ง ๋ชปํฉ๋๋ค. API๋ฅผ ์์ ํ์ง ์๊ณ ๋.. 2022. 8. 21. ํ๋์ ๋ ํฌ์งํ ๋ฆฌ๋ก ํ์ ์ํฐํฐ ๊ด๋ฆฌํ๊ธฐ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ์ ๊ทธ๋ฆฌ๊ฒ์์ ๋ํด ํ์ตํ๊ณ ๊ณ ๋ฏผํ๋ ๋ด์ฉ์ ๋๋ค. DDD์ ๊ด๋ จ๋ ๋ด์ฉ์ธ๋ฐ ์ด์ ๋ํด ์ ํํ ๊ฐ๋ ์ ํ์ตํ ์ฑ ์์ฑํ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ์๋ชป๋ ๋ด์ฉ์ ์๋ ค์ฃผ์ ๋ค๋ฉด ๋ณด๋ ์ฆ์ ์์ ํ๊ฒ ์ต๋๋ค. **JPA๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ธ์ ์ฝ๊ธฐ ์ํด์๋ JPA์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ดํด๊ฐ ํ์ํฉ๋๋ค. 2022. 10. ** ๋ณ๋์ API๊ฐ ํ์ํ๊ธฐ ๋๋ฌธ์ ํ๋์ ๋ ํฌ์งํ ๋ฆฌ๋ก ํ์ ์ํฐํฐ๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ ํ๋ค๋ค๊ณ ํ๋จํด ์ด ํฌ์คํ ์ ๊ทธ ๋น์์ ์๊ฐ, ํ๋์ ๋ฐฉ๋ฒ ์ ๋๋ก ์ฝ์ด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. 1. ๋ณ๋์ ๋ ํฌ์งํ ๋ฆฌ๊ฐ ํ์ํ ๊น? ๊ฒ์ํ์ ๋ง๋ค๋ ๋๊ธ์ ๊ฒ์๊ธ์ ํ์์ ์ํด์์ต๋๋ค. ์ด ๊ฒฝ์ฐ /api/posts/{postId}/comments/{commentId} ์ ๊ฐ์ด API๋ฅผ ๊ตฌ์ฑํ ์ ์๋๋ฐ์, ๋ฌผ๋ก .. 2022. 7. 31. ๊ฐ์ ๊ฒ์ฆํ๋ ์์น๋ ์ด๋๊ฐ ์ข์๊น? ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๊ฐ ๊ฒ์ฆ ์์น์ ๋ํด ๊ณ ๋ฏผํ๋ ๋ด์ฉ์ธ๋ฐ์, DTO์์ @Validation ์ ์ฌ์ฉํด ๊ฐ์ ๊ฒ์ฆํ๋ ๋ฐฉ๋ฒ์ ๋ฐ๊พธ๊ณ ์ ํ๋ ๋ด์ฉ์ ๋๋ค. ์ ๋ต์ ์๊ธฐ ๋๋ฌธ์ ํ๋์ ์๊ฒฌ์ผ๋ก ์ฝ์ด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. JPA๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๊ธ์ ์ฝ๊ธฐ ์ํด์๋ JPA์ ๋ํ ๊ธฐ๋ณธ์ ์ธ ์ดํด๊ฐ ํ์ํฉ๋๋ค. 1. DTO์์ ๊ฐ ๊ฒ์ฆ ์ํฐํฐ๋ฅผ ์์ฑํ๊ธฐ ์ํด ๊ฐ์ DTO์์ ๊ฒ์ฆํ ์ ์์ต๋๋ค. ์ด๋ ์๋์ ๊ฐ์๋ฐ์, ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ฐ์ ๊ฐ์ ์ด๋ ธํ ์ด์ ์ ํตํด ๊ฒ์ฆํ๋ ๊ฒ์ ๋๋ค. ์ปจํธ๋กค๋ฌ์์ @Valid ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํด์ผ ํ์ง๋ง ์ด๋ ธํ ์ด์ ์ ํตํด ๊ฐ์ ๊ฐํธํ๊ฒ ๊ฒ์ฆํ ์ ์์ต๋๋ค. ํ์ง๋ง ์๋์ ๊ฐ์ ๋ช๊ฐ์ง ์๋ฌธ์ ์ด ๋ค์์ต๋๋ค. ์์ต๋๋ค. ์๊ตฌ์ฌํญ์ด ๋ฐ๋๋ฉด DTO๋ฅผ ์ฌํ์ฉํ ์๋ ์์ผ๋ฉฐ ๋งค๋ฒ ์กฐ๊ฑด์ ๋ณ๊ฒฝํด์ค.. 2022. 7. 30. @Component์ @Configuration์ ์ฐจ์ด @Component์ @Comfiguration์ ์ฐจ์ด์ ๊ดํด ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค. ๊ฒฐ๋ก ๋ถํฐ ๋งํ๋ฉด @Component๋ ๊ฐ๋ฐ์๊ฐ ์์ฑํ ํด๋์ค๋ฅผ Bean์ผ๋ก ๋ฑ๋กํ ๋ ์ฌ์ฉํ๊ณ @Configuration + @Bean์ ๊ฐ๋ฐ์๊ฐ ์ง์ ์ ์ดํ๊ธฐ ํ๋ ํด๋์ค๋ฅผ ๋น์ผ๋ก ๋ฑ๋กํ ๋ ์ฌ์ฉํฉ๋๋ค. **์ฐธ์กฐ ์ข ๋ฅ ์ ์ธ ์ฌ์ฉ ์ฉ๋ @Component ํด๋์ค ์ฌ์ฉ์๊ฐ ๋ง๋ ํด๋์ค @Bean ๋ฉ์๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ 1. @Component / @Configuration @Component๊ฐ ๋ฌ๋ฆฐ ํด๋์ค๋ ์๋์ผ๋ก ์คํ๋ง ์ปดํฌ๋ํธ ์ค์บ ๋์์ด ๋๊ธฐ ๋๋ฌธ์ ๋ณ๋๋ก Bean์ ๋ฑ๋กํ์ง ์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด๋ ์คํ ๋ ์ค ํ์ ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ๋ ํด๋์ค์ ๋ฌ๋ ค ์๋๋ฐ์, ์คํ ๋ ์ค ํ์ ์ด๋ ์ฐ๋ฆฌ๊ฐ ํํ ์ฌ์ฉํ๋ @Contro.. 2022. 7. 24. FrontController ํจํด ์น ์๋ฒ ๋ง๋ค๊ธฐ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ํ๋ก ํธ ์ปจํธ๋กค๋ฌ ํจํด์ ๋ํด ํ์ตํ๊ณ ์์ฑํ ๊ธ์ ๋๋ค. ํ์ต๊ณผ์ ์์ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์๋ชป๋ ๋ด์ฉ์ด ์์ ์ ์์ผ๋ฉฐ, 1. ์๋ธ๋ฆฟ๊ณผ jsp ์๋ธ๋ฆฟ์ ์ฌ์ฉํ๋ฉด ๋์ ์ผ๋ก html์ ์์ฑํ ์ ์๋๋ฐ์, ํ์ง๋ง ์๋ฐ์ฝ๋๋ก text/html์ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์ ๋ฉ์์ง body์ text/html๊ณผ ์ธ์ฝ๋ฉ ๋ฐฉ์(utf-8)๊ณผ ๊ฐ์ ์ ๋ณด๋ฅผ ์ง์ ๋ฃ์ด์ค์ผ ํฉ๋๋ค. ์ด๋ (์๋ฐ๋ก html์ ๋ค๋ฃจ๊ธฐ ๋๋ฌธ์) ๋ณต์กํ๊ณ ๋นํจ์จ์ ์ธ ๋ฐฉ์์ด๋ฉฐ requestParam( ) ๋ฉ์๋๋ ๋ฐํ ํ์ ์ด String์ด๊ธฐ ๋๋ฌธ์ ํ ๋ณํ ๋ํ ๊ฐ์ ๋ก ํด์ค์ผ ํ๋ ๋ฌธ์ ๋ ์์ต๋๋ค. ์ด๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด jsp๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋๋ฐ์, ๋ทฐ๋ฅผ ์์ฑํ๋ ์์ ์ jsp๊ฐ ๊ฐ์ ธ๊ฐ๊ณ ๋์ ์ผ๋ก ๋ณ๊ฒฝ์ด ํ์ํ ๋ถ๋ถ์๋ง ์๋ฐ ์ฝ๋๋ฅผ .. 2022. 7. 21. @Embedded์ ๊ฐ ๊ฐ์ฒด @Embedded ๋ฅผ ์ฌ์ฉํ๋ฉด ์ํฐํฐ์ ๊ฒฝ์ฐ ๋ฐ๋์ protected ์ด์์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๋ง๋ค์ด ์ค์ผ ํ๋๋ฐ์, ์ด๋ JPA๊ฐ ๋ฆฌํ๋ ์ ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ง๋ง ๊ฐ ๊ฐ์ฒด์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ์์ด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋์ ํ์ง๋ง ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ/์์ /์ญ์ ํ ๋ ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด์ ๋ํด ๊ฒช์๋ ๋ด์ฉ์ ํ ๋ฒ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค. 1. @Embedded์ ๊ธฐ๋ณธ ์์ฑ์ ๊ฐ ๊ฐ์ฒด ๋ด๋ถ์ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ๋ง๋ค์ง ์์ผ๋ฉด ์๋์ ๊ฐ์ด ์์ฑ์๋ฅผ ๋ง๋ค๋ผ๋ ๊ฒฝ๊ณ ๋ฉ์์ง๊ฐ ๋ํ๋ฉ๋๋ค. ๋ฌผ๋ก ์ด๋ ๊ฒ ์์ธ๊ฐ ๋ฐ์ํด๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋์ํฉ๋๋ค. ํ์ง๋ง ์ค์ ๊ฐ์ ์ ์ฅํ๋ ๊ณผ์ ์์๋ ์์ธ๊ฐ ๋ฐ์ํ๋๋ฐ์, ์ด๋ฅผ ์คํํ๊ธฐ ์ํ ์ค์ ์ ๋จผ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ปจํธ๋กค๋ฌ์ ์๋น์ค, DTO๋ ์๋์ ๊ฐ์ต๋๋ค. ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํด.. 2022. 7. 17. private ์์ฑ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๊ธฐ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ private ์์ฑ์๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด ์ดํํฐ๋ธ ์๋ฐ ์์ดํ 4๋ฅผ ์ฝ๊ณ ์ถ๊ฐ์ ์ธ ๋ด์ฉ์ ๋ณด๊ฐํ์ต๋๋ค. ํ์ต ๊ณผ์ ์์ ์์ฑ๋์๊ธฐ ๋๋ฌธ์ ์๋ชป๋ ๋ด์ฉ์ด ์์ ์ ์์ต๋๋ค. - ์ธ์คํด์คํ ๋ฐฉ์ง(feat. ์ฌ๋ฐ๋ฅธ private ์์ฑ์ ์ฌ์ฉ๋ฒ) - ์ ํธ ํด๋์ค์ ๊ฐ์ฒด์งํฅ - Conclusion 1. ์ธ์คํด์คํ ๋ฐฉ์ง ๋ชจ๋ ํด๋์ค๋ค์ด ์ธ์คํด์คํ๊ฐ ํ์ํ ๊ฒ์ ์๋๊ธฐ ๋๋ฌธ์ ์ํฉ์ ๋ฐ๋ผ private ์์ฑ์๋ฅผ ๋ง๋๋๋ฐ์, ์ด๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. private ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋์ ๋ ์ธ์คํด์คํ๋ฅผ ๋ฐฉ์งํ ์๋ ์์ง๋ง ์ถ์ ํด๋์ค๋ฅผ ๋ง๋ค๊ฑฐ๋ ๋ฆฌํ๋ ์ ์ ํตํด ์ธ์คํด์คํ๋ฅผ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์กฐ์ฌํด์ผ ํฉ๋๋ค. ์๋์ ๊ฐ์ด ์ถ์ํด๋์ค๋ฅผ ์ ์ํ๊ณ ์ ํธ ๋ฉ์๋๋ฅผ ๋ง๋ค๋ฉด ์ธ์คํด.. 2022. 7. 17. @Embedded์ ๊ธฐ๋ณธ ์์ฑ์ ๊ฐ๋จํ์ง๋ง ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ๊ณ ๋ฏผํ๊ณ ์ฝ์ง(?) ๋ด์ฉ์ ๋ํด ๊ณต์ ํด๋ณด๋ ค ํฉ๋๋ค. JPA๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ ๊ฐ์ฒด ๋ด๋ถ์ ๋ฐ๋์ ๊ธฐ๋ณธ ์์ฑ์๊ฐ ํ์ํ๋ฐ์, ์ฌ์ฉํ์ง ์๋ ๊ธฐ๋ณธ ์์ฑ์๋ฅผ ์ด๋ป๊ฒ ํ๋ฉด ํธ์ถํ์ง ๋ง๋ผ๊ณ ์ ๋ํ๋ผ ์ ์์๊น? ๋ฅผ ๊ณ ๋ฏผํ๋ ๋ด์ฉ์ ๋๋ค. **๊ฒฐ๋ก ์ ์ฃผ์ ๋ง๊ณ ๋ ์๋ค ์์ต๋๋ค. 1. @Embedded ์ ๋ด๊ฐ ํ๋ ์ค์ ์ ๊ฐ ํ๋ ๊ณ ๋ฏผ๊ณผ ์ค์์ ๋ํด ๋ด์ฉ์ธ๋ฐ์, JPA์์ @Embedded, @Embeddable์ ์ฌ์ฉํ๊ฒ ๋๋ฉด protected ์ด์์ ๋น ์์ฑ์๋ฅผ ๋ฐ๋์ ์์ฑํด์ผ ํฉ๋๋ค. ์ด๋ ์ํฐํฐ์์ ๋น ์์ฑ์๋ฅผ ๋ฐ๋์ ๋ง๋ค์ด์ผ ํ๋ ๊ฒ๊ณผ ๋น์ทํ๋ฐ ๊ฒฝ์ฐ์ ๋ฐ๋ผ์๋ ์ฌ์ฉํ์ง๋ ์๋ ์์ฑ์๋ฅผ ํ๋ ๋ ๋ง๋ค๊ฒ ๋ฉ๋๋ค. ์ด๋ ๊ฒ ๋๋ฉด ์ฌ์ฉํ์ง ์๊ธธ ์ํ๋ ์์ฑ์๋ฅผ ์๋ชป ํธ์ถํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋.. 2022. 7. 14. ๋ธ๋ฆฟ์ง ํจํด ์ถ์์ ์ธ ๊ฒ๊ณผ ๊ตฌ์ฒด์ ์ธ ๊ฒ์ ๋ถ๋ฆฌํ์ฌ ์ฐ๊ฒฐํ๋ ํจํด. ํ๋์ ๊ณ์ธต ๊ตฌ์กฐ์ผ ๋๋ณด๋ค ๊ฐ๊ธฐ ๋๋์์ ๋ ๋ ๋ฆฝ์ ์ธ ๊ณ์ธต ๊ตฌ์กฐ๋ก ๋ฐ์ ์ํฌ ์ ์๋ค. ๋ธ๋ฆฟ์ง ํจํด์ ์ฅ์ - ์ถ์์ ์ธ ์ฝ๋๋ฅผ ๊ตฌ์ฒด์ ์ธ ์ฝ๋ ๋ณ๊ฒฝ ์์ด๋ ๋ ๋ฆฝ์ ์ผ๋ก ํ์ฅํ ์ ์๋ค. - ์ถ์์ ์ธ ์ฝ๋์ ๊ตฌ์ฒด์ ์ธ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ ์ ์๋ค. ๋จ์ - ๊ณ์ธต ๊ตฌ์กฐ๊ฐ ๋์ด๋ ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ ์ ์๋ค. 2022. 7. 10. ์ฑ๊ธํค๊ณผ ๋ฌธ์ ์ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉฐ ์ฑ๊ธํค์ ํ์ตํ๊ฒ ๋๊ณ , ๋ฐฑ๊ธฐ์ ๋์ ๋์์ธํจํด ๊ฐ์๋ฅผ ๋ฃ์ผ๋ฉฐ ์์ฑํ ๊ธ์ ๋๋ค. ํ์ต ๊ณผ์ ์์ ์์ฑ๋์๊ธฐ ๋๋ฌธ์ ์๋ชป๋ ๋ด์ฉ์ด ์์ ์ ์์ผ๋ฉฐ ์ด๋ฅผ ์๋ ค์ฃผ์ ๋ค๋ฉด ์ฆ์ ์์ ํ๊ฒ ์ต๋๋ค. 1. ์ฑ๊ธํค์ ์ง์ ๊ตฌํํ์ ๋์ ๋ฌธ์ ์ ์ฑ๊ธํค์ ์ผ๋ฐ์ ์ผ๋ก ๊ตฌํํ๋ฉด ์๋์ ๊ฐ์ ํจํด์ผ๋ก ๊ตฌํํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ์๋ ๋ช ๊ฐ์ง ๋ฌธ์ ์ ์ด ์กด์ฌํ๋๋ฐ์, ์ฐ์ ๋๊ธฐํ ๋ฌธ์ ์ ์์ ํ์ง ์๋ค๋ ๊ฒ๊ณผ ์ฑ๊ธํค์ด ๊นจ์ง ์ ์๋ค๋ ์ ์ ๋๋ค. ์ฐ์ ๋๊ธฐํ ๋ฌธ์ ์ ๋ํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ์๋ ์ฌ์ฉ์A์ B๊ฐ ๋์์ ํด๋น ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ค๋ฉด ๋ชจ๋ new Setting( )์ ํตํด ์ธ์คํด์ค๋ฅผ ์์ฑํ๊ฒ ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์ธ์คํด์ค๊ฐ ๋ค๋ฅธ ๋ฌธ์ ์ ์ด ๋ฐ์ํ๊ฒ ๋๋๋ฐ์, ๋ฐ๋ผ์ ์ด๋ฅผ ๋ง๊ธฐ ์ํด์๋ ์๋.. 2022. 7. 10. ์ผ๊ธ ์ปฌ๋ ์ ๊ณผ ์ฃผ์์ฌํญ Collection์ Wrapping ํ๋ฉด์ ๊ทธ ์ธ์ ๋ค๋ฅธ ๋ฉค๋ฒ ๋ณ์๊ฐ ์๋ ์ํ. ๋งด๋ฒ ๋ณ์๊ฐ Collection์ ์์/๊ตฌํ์ฒด๋ผ๋ฉด ์ด๋ค ์ข ๋ฅ๋ ์๊ด์๋ค. 1. ์ฅ์ ์ผ๊ธ ์ปฌ๋ ์ ์ ์ฌ์ฉํ๋ฉด ๋ถ๋ณ๊ฐ์ฒด, ์์ง์ฑ ์๋ ๊ฐ์ฒด์ ์ฅ์ ๋ค์ ๋ชจ๋ ์ทจํ ์ ์์ต๋๋ค. ๊ฐ์ ์์ ํ ์ ์์ผ๋ฉฐ ํด๋น ๊ฐ์ฒด๊ฐ ์์ ๊ณผ ์ฐ๊ด๋ ๋ก์ง์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด์๋ํด ํ๋์ฉ ์ดํด๋ณด๊ฒ ์ต๋๋ค. *๊ฐ๋ณ ๊ฐ์ฒด์ ์ํ์ฑ์ ๋ํด์๋ ์๋ ๊ธ์ ์ฐธ์กฐ ํ์๋ฉด ๋ฉ๋๋ค. ๊ฐ๋ณ ๊ฐ์ฒด์ ์ํ์ฑ ๊ฐ๋ณ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ณธ์ด ์์ ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ํํฉ๋๋ค. ๋ํ ์ด๋ฅผ ๋์์ ์ฌ๋ฌ ๊ณณ์์ ์์ ํ๊ฒ ๋๋ฉด ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ ์ถ์ ํ๋ ๊ฒ์ด ์ฝ์ง ์์ต๋๋ค. ์๋ ์์๋ ๊ฐ๋ณ ํด๋์ค Numbers tmit10.tistory.com 1-1. ๋ถ๋ณ(Immutabl.. 2022. 2. 22. TreeSet 1. TreeSet ์ด์ง ๊ฒ์ ํธ๋ฆฌ(Binary Search Tree) ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ปฌ๋ ์ ํด๋์ค. ์ ๋ ฌ, ๊ฒ์/๋ฒ์๊ฒ์์ ๋์ ์ฑ๋ฅ์ ๋ณด์ด๋ฉฐ ์ด์ง ๊ฒ์ ํธ๋ฆฌ์ ์ฑ๋ฅ์ ํฅ์์ํจ Red-Black tree ํํ๋ก ๊ตฌํ๋์ด ์์ต๋๋ค. Set ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ์ค๋ณต์ ํ์ฉํ์ง ์์ผ๋ฉฐ ์ ๋ ฌ๋ ์์น์ ์ ์ฅํ๋ฏ๋ก ์ ์ฅ์์๋ฅผ ์ ์งํ์ง๋ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ๋ก ์ ์ฅ๋๋ ๊ฐ์ ๋ฃจํธ๊ฐ ๋๊ณ , ๋ ๋ฒ์งธ ๊ฐ์ ํธ๋ฆฌ์ ๋ฃจํธ๋ถํฐ ์์ํด์ ๊ฐ์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํ๋ฉด์ ํธ๋ฆฌ๋ฅผ ๋ฐ๋ผ ๋ด๋ ค๊ฐ๋๋ค. ์ด๋ ์์ ๊ฐ์ ์ผ์ชฝ์, ํฐ ๊ฐ์ ์ค๋ฅธ์ชฝ์ ์ ์ฅํฉ๋๋ค. ์ปดํจํฐ๋ ๊ฐ์ ์ค์ค๋ก ๋ชป ๋น๊ตํ๊ธฐ ๋๋ฌธ์ Comparable ํน์ Comparator๋ฅผ ์ ๊ณตํด ๋ ๊ฐ์ฒด๋ฅผ ๋น๊ตํ ๋ฐฉ๋ฒ์ ์๋ ค์ค์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด TreeS.. 2022. 2. 22. ์์ํ๊ณผ String ์์ํ์ ํ ์์ญ ๋ด๋ถ์ ๋ฌธ์์ด ๊ฐ์ฒด๋ฅผ ์ํด ๋ณ๋๋ก ๊ด๋ฆฌํ๋ ์ ์ฅ์์ ๋๋ค. ๋ง์ฝ ์์ํ์ ๊ฐ์ ๊ฐ์ ๊ฐ์ง String ๊ฐ์ฒด๊ฐ ์กด์ฌํ๋ฉด ๊ทธ ๊ฐ์ฒด์ ์ฃผ์๊ฐ์ ์ฐธ์กฐํ๋ฉฐ, ๊ฐ์ ์ฐพ์ง ๋ชปํ๋ฉด ์์ํ์ ํด๋นํ๋ ๊ฐ์ ๊ฐ์ง ๋ฌธ์์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๊ทธ ์ฃผ์๊ฐ์ ๋ฐํํฉ๋๋ค. ๋ฆฌํฐ๋ด๋ก ์ ์ธํ ๊ฒฝ์ฐ ๋ด๋ถ์ ์ผ๋ก String์ intern( ) ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค. ๋ฆฌํฐ๋ด("")๋ก String ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ฉด JVM์ ๋จผ์ ์์ํ์ ํ์ํฉ๋๋ค. ๋ง์ฝ ๊ฐ์ ๊ฐ์ ๊ฐ์ง String ๊ฐ์ฒด๋ฅผ ์ฐพ์ผ๋ฉด ๊ทธ ๊ฐ์ฒด์ ์ฃผ์ ๊ฐ์ ๋ฐํํด์ ์ฐธ์กฐํ๋ฉฐ, ์ด๋ฅผ ์ฐพ์ง ๋ชปํ ๊ฒฝ์ฐ ์์ํ์ ํด๋น ๊ฐ์ ๊ฐ์ง String ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๊ทธ ์ฃผ์ ๊ฐ์ ๋ฐํํฉ๋๋ค. ์ด๋ intern( ) ๋ฉ์๋๋ฅผ ํตํด ๋ฑ๋ก๋๋๋ฐ์, String.equals( ) ๋ฐํ๊ฐ์ด tr.. 2022. 2. 20. ์ด์ 1 ๋ค์