์ฌ ๋ง์ดํฌ๋ก ์์คํ ์ฆSun Microsystems์์ ๊ฐ๋ฐํ์ฌ 1996๋ 1์์ ๋ฐํ๋ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด ๋ถ์ด ์๋ฐ๋ฅผ ๋ง๋ ์ ์์ค ๊ณ ์ฌ๋งJames Arthur Gosling์ด๋คํน์งJVM(Java Virtual Machine)์ ์ด์ฉํ๊ธฐ ๋๋ฌธ์ ์ด์์ฒด์ ์ ๋ ๋ฆฝ
์ ํํ์ง ์์ ์ ๋ณด๊ฐ ์์ ์ ์์ต๋๋ค.์ฝ๋ ์ฌ์ฌ์ฉ์ ์ง๋ณด์ ์ฉ์ด์ ๋ขฐ์ฑ ๋์ ํ๋ก๊ทธ๋๋ฐํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ์ ์ํด๋์ ์ผ์ข ์ ์ค๊ณ๋๋ค.๋๋์ฒด ํด๋์ค๋ฅผ ์ ๋ง๋๋๋ฐ?ํด๋์ค๋ ์ผ์ข ์ ๋ถํ์ด ์๋๊น? ์ด๋ฅผํ ๋ฉด ๊ฑฐ๋ํ ์ฐ์ฃผ์ ์ ๋ง๋ ๋ค๊ณ ํ์.์๋ง๊ฐ์ง์ ๋ถํ์ด ํ์ํ๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋
์๋ฐ์ ์ ์ 3ํ์ ์ฐธ๊ณ ํ์ต๋๋ค. ํ๋ฆฐ ๋ด์ฉ์ด ์์ ์ ์์ต๋๋ค.JVM์ ํ๋ก๊ทธ๋จ์ ์ํํ๋๋ฐ ํ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น ๋ฐ๋๋ค. JVM์ ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ๋ฌ ์์ญ์ผ๋ก ๋๋๋๋ฐ, ์ฃผ์ ์์ญ ์ธ ๊ฐ์ง๋ค.Method area ํด๋์ค๊ฐ ์ฌ์ฉ๋ ๋, JVM์ ํด๋น ํด๋์ค์ ํด๋์ค
์ ๊ทผ ์ ์ด์๊ฐ ์๋ ์ ์ด์๋ค๋ก๋static, final, abstract, synchronized......๋ฑ์ด ์๋ค.๋ช ๊ฐ์ง๋ง ์๊ฐํ๋ค.๋ฉค๋ฒ๋ณ์, ๋ฉ์๋, ์ด๊ธฐํ ๋ธ๋ญ ์์ ๋ถ๋๋ค.static์ด ๋ณ์์ ๋ถ์ผ๋ฉด ๋ชจ๋ ์ธ์คํด์ค์์ ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ํด๋์ค ๋ณ์๊ฐ ๋๋ค.๋ฉ
๊ธฐ์กด์ ํด๋์ค๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ์๋ก์ด ํด๋์ค๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค.์ฝ๋๋ฅผ ๊ณตํต์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ง๋ณด์ ํ๊ธฐ ์ฝ๋ค.extends๋ง์ผ๋ก ๊ฐ๋จํ๊ฒ ์์ ๋ฐ์ ์ ์๋ค.์์ํด์ฃผ๋ ํด๋์คParent๋ฅผ ์กฐ์ ํด๋์ค, ์์์ ๋ฐ๋ ํด๋์คChild๋ฅผ ์์ ํด๋์ค๋ผ๊ณ ํ๋ค.์ด
์ด์ ํ๋ ๋ฒ์ ํ ๋ฒ๋ง ๋ฐฐ์ฐ๋ฉด ์ด๋ค ์๋์ฐจ๋ ์ด์ ํ ์ ์๋ค. ์๋์ฐจ ๋ธ๋๋๋ ๋ด๋ถ ๊ตฌํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง์ง ์๋๋ค. ๋์ผํ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๊ฒ ๋คํ์ฑ์ด๋ค.OOP์์ ๋คํ์ฑ์ด๋ ์ฌ๋ฌ๊ฐ์ง ํํ๋ฅผ ๊ฐ์ง ์ ์๋ ๋ฅ๋ ฅ. ๋งํ์๋ฉด ์กฐ์ํด๋์ค ํ์ ์ ์ฐธ์กฐ๋ณ์๋ก
์ถ์ ํด๋์ค๋?๋ฏธ์์ฑ ํด๋์ค ์ฆ, ์์ฑ๋์ง ์์ abstract ๋ฉ์๋๋ฅผ ํฌํจํ๊ณ ์๋ ํด๋์ค๋ผ๋ ๋ป์ด๋ค.๋ฉ์๋๋ ์ ์ธ๋ถ์ ๊ตฌํ๋ถ๋ก ๋๋๋ค. ์ ์ธ๋ถ๋ง ์๊ณ ๊ตฌํ๋ถ๋ ์์ฑํ์ง ์์ ๋ฉ์๋๋ฅผ ์ถ์ ๋ฉ์๋๋ผ๊ณ ๋ถ๋ฅธ๋ค.์ถ์ ํด๋์ค๋ฅผ ์์๋ฐ๋ ์์ ํด๋์ค๋ ๋ถ๋ชจ ํด๋์ค๊ฐ ๊ฐ์ง
๋ด๋ถ ํด๋์ค๋ ๋จ์ํ ํด๋์ค ๋ด์ ์ ์ธ๋ ํด๋์ค๋ค.๋ด๋ถ ํด๋์ค์ ์ฅ์ 1.๋ด๋ถ ํด๋์ค์์ ์ธ๋ธ ํด๋์ค ๋ฉค๋ฒ์ ์ฝ๊ฒ ์ ๊ทผ ๊ฐ๋ฅ 2.์ฝ๋ ๋ณต์ก์ฑ์ ์ค์ธ๋ค(์บก์ํ)์ ๋ค์ด์ด๊ทธ๋จ์์ ๋ณด๋ค์ํผ ๋ด๋ถ ํด๋์ค๋ ํด๋์ค์ ๋ฉค๋ฒ์ฒ๋ผ ๋ค๋ฃฌ๋ค. ๋ค๋ฅธ ์ ์ ์ต๋ช ํด๋์คAnonymous
Collections Framework๋ ๋ค์์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐ ํ์ํ ๋ค์ํ ํด๋์ค๋ฅผ ์ ๊ณตํ๋ค.์์๊ณ์ธต๋์ด๋ฏธ์ง ์ถ์ฒ : http://dinfree.com/lecture/language/112_java_6.html์ปฌ๋ ์ ํ๋ ์์ํฌ์ ๋ชจ๋ ์ปฌ๋ ์ ํด๋์ค๋ค์
์คํ์ ๋ง์ง๋ง์ ์ ์ฅํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ๋จผ์ ๊บผ๋ด๋ Last in first out(LIFO)๊ตฌ์กฐ.ํ๋ ์ฒ์ ์ ์ฅํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ๋จผ์ ๊บผ๋ด๋ First in first out(FIFO)๊ตฌ์กฐ๋ค.์ฐธ๊ณ ๋ก Stack์ ํด๋์ค, Queue๋ ์ธํฐํ์ด์ค๋ค.Stack์ ๋ฉ์๋Que
ArrayList๋ ์ปฌ๋ ์ ํ๋ ์์ํฌ์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ํด๋์ค๋ค. Object๋ฅผ ์ด์ฉํด ์์ฐจ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค. ์ ์ฅ ๊ณต๊ฐ์ด ์์ผ๋ฉด ๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ๋์ด๋๋ค. ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์ด์ ๊ธฐ์กด์ ๋ฐฐ์ด์ ๋ณต์ฌํด ๋ค์ ์ ์ฅํ๋ค.ArrayList์ ์์ค ์ผ๋ถ๋ค. ele
๋ฐฐ์ด์ ๋ค๋ฃจ๊ธฐ ํธํ static๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.toString()println๋ฉ์๋์ฒ๋ผ ๋ชจ๋ ํ์ ์ ์ถ๋ ฅํ ์ ์๊ฒ ์ค๋ฒ๋ก๋ฉ ๋์ด ์๋ค.copyOf()๋ฐฐ์ด ์ ์ฒด๋ฅผ ๋ณต์ฌํ๋ค.copyOfRange()๋ฐฐ์ด ์ผ๋ถ๋ฅผ ๋ณต์ฌํ๋ค.fill()๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ง์ ํ ๊ฐ์ผ๋ก ์ฑ์ด๋ค
๊ธฐ๋ณธ ์ ๋ ฌ ๊ธฐ์ค์ ๊ตฌํํ ๋ ์ฌ์ฉํ๋ค. ๊ธฐ๋ณธ ์ ๋ ฌ ๊ธฐ์ค ์ธ, ๋ค๋ฅธ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ๋ ์ฌ์ฉํ๋ค.
HashSet > HashSet์ Set์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฐ์ฅ ๋ํ์ ์ธ ์ปฌ๋ ์ ์ด๋ค. ๋ค์ ์๊ธฐํ์๋ฉด, Set์ ์ค๋ณต ํ์ฉ X ์์ฐจ ์ ์ฅ X ์ค๋ณต๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ค๊ณ ํ๋ฉด false๋ฅผ ๋ฐํํ๋ค. HashSet์ ํน์ง์ ์ด์ฉํ๋ฉด ์ค๋ณต์ ์ฝ๊ฒ ์ ๊ฑฐํ ์ ์๋ค. Ha
TreeSet์ ์ด์ง ๊ฒ์ ํธ๋ฆฌbinary search tree๋ผ๋ ์๋ฃ๊ตฌ์กฐ์ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์ปฌ๋ ์ ํด๋์ค๋ค. ์ด์ง ๊ฒ์ ํธ๋ฆฌ๋ ์ ๋ ฌ, ๊ฒ์, ๋ฒ์ ๊ฒ์Range Search์ ๋์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค. TreeSet์ ์ด์ง ๊ฒ์ ํธ๋ฆฌ์ ์ฑ๋ฅ์ ํฅ์์ํจ ๋ ๋-๋ธ๋
HashMap์ Hashtable์ ํ์ด์ค๋ฆฌํํธ ๋ฒ์ ์ด๋ค.Map์ ๊ตฌํํ ํด๋์ค์ ํน์ง์ ์๋์ ๊ฐ๋ค.key, value๋ฅผ ๋ฌถ์ด์ ํ๋์ ๋ฐ์ดํฐentry๋ก ์ ์ฅํ๋ค.key๋ ์ ์ผuniqueํด์ผ ํ๋ค.value๋ ์ค๋ณต ๊ฐ๋ฅํด์ฑhassing์ ์ฌ์ฉํ๋ฏ๋ก ๋ง์ ์์ ๋ฐ์ดํฐ๋ฅผ
์ด๋ฏธ์ง ์ถ์ฒ : https://adrianmejia.com/data-structures-for-beginners-trees-binary-search-tree-tutorial/ ํธ๋ฆฌ๊ตฌ์กฐ. TreeMap ์ด๋ฏธ์ง ์ถ์ฒ : https://www.java8net.com
Collectionsํด๋์ค๋ ์ปฌ๋ ์ ๊ณผ ๊ด๋ จ๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.Collectionsํด๋์ค๋ ๋๊ธฐํ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ ํ ๋ ํ์ํ๋ค๋ฉด ์๋ ๋ฉ์๋๋ค์ ์ด์ฉํด ๋๊ธฐํ ํ ์ ์๋ค.์ปฌ๋ ์ ์ ์ฝ๊ธฐ ์ ์ฉRead-Only์ผ๋ก ๋ง๋ค์ด์ผ ํ ๋๊ฐ ์๋ค. ๊ฐ์ฒด
Generics ์ปฌ๋ ์ ํด๋์ค์ ์ปดํ์ผ ์ ํ์ ์ฒดํฌ๋ฅผ ํด์ฃผ๋ ๊ธฐ๋ฅ. ์ฅ์ ํ์ ์์ ์ฑ์ ๋์ฌ์, ์๋ํ์ง ์์ ํ์ ์ ๊ฐ์ฒด๊ฐ ์ ์ฅ๋๋ ๊ฒ์ ๋ง๋๋ค. ์ง๋ค๋ฆญ ํด๋์ค Box<T>์์ T๋ฅผ ํ์ ๋ณ์๋ผ๊ณ ํ๋ค. ํ์ ๋ณ์๋ ๊ผญ T๊ฐ ์๋๋ผ๋ ์ํฉ์ ๋ง๋ ๋ค๋ฅธ
๊ธฐํธ '?' ํํํ๋๋ฐ, ์์ผ๋์นด๋๋ ์ด๋ค ํ์ ๋ ๋ ์ ์๋ค.์๋ ์ฝ๋๋ฅผ ๋ณด์.Fruit, Grape, Apple ํด๋์ค๋ ์ ์ธํ๋ค. ์ด์ ๊ธ์์ ๋ณผ ์ ์๋ค.ํต์ฌ์ ์ด ๋ถ๋ถ์ด๋ค.๋ง์ฝ, ์์ผ๋์นด๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค๊ณ ๊ฐ์ ํ์.์ด๋ฐ ์์ผ๋ก ์ค๋ณต ์ ์ํ์ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋
๋ฉ์๋ ์ ์ธ๋ถ ๋ฐํํ์ ์์ ์ง๋ค๋ฆญ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ง๋ค๋ฆญ ๋ฉ์๋๋ผ ํ๋ค.์ง๋ค๋ฆญ ํด๋์ค์ ์ ์ฉ๋ ํ์ ๋งค๊ฐ๋ณ์์ ์ง๋ค๋ฆญ ๋ฉ์๋์ ์ ์ฉ๋ ํ์ ๋งค๊ฐ๋ณ์๋ ๋ณ๊ฐ๋ค.์ด์ ๊ธ์์ ๋ง๋ค์๋ makeJuice()๋ฅผ ์ง๋ค๋ฆญ ๋ฉ์๋๋ก ๋ฐ๊พธ๋ฉด ์ด๋ ๋ค.์ด ๋ฉ์๋๋ฅผ์ด๋ ๊ฒ ๋ฐ๊ฟ ์ ์๋ค.์ด
๋๋ค์Lambda Expression ์๋ฐ๋ ๋ ๋ฒ์ ํฐ ๋ณํ๊ฐ ์์๋ค. JDK1.5์ ์ง๋ค๋ฆญ์ค. JDK1.8์ ๋๋ค. ๋๋ค์ ๋ฑ์ฅ์ผ๋ก ๊ฐ์ฒด์งํฅ์ธ์ด๋ฅผ ๋๋จธ ํจ์ํ ์ธ์ด๊ฐ ๊ฐ์ง ๊ธฐ๋ฅ๊น์ง ๊ฐ์ถ๊ฒ ๋์๋ค. ๋งํ์๋ฉด ๋น๋ก์ ํธ๋ชจ ์ฌํผ์์ค์ ๊ธธ์ ์ ์ด๋ ๊ฒ์ด๋ค. > ๋๋ค์
์์ธ Exception ์ด๋ฏธ์ง ์ถ์ฒ ์์ธ ํด๋์ค ๋ค์ด์ด๊ทธ๋จ ์๋ฐ์์ ์๋ฌ๋ ํฌ๊ฒ ๋ ๊ฐ๋๋ก ๋๋ ์ ์๋ค. error exception ์์ธexception๋ ์ฒ๋ฆฌํ ์ ์์ง๋ง, ์๋ฌ๋ ์ ์ธ ๋ฐฉ๋ฒ์ด ์๋ค. Exception์ RunTimeExceptio
์๋ชป๋ ๋ด์ฉ์ด ์์ ์ ์์ต๋๋ค.ํด์ฑ์ด๋ ํด์ํจ์๋ฅผ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ํค์ํ ์ด๋ธ์ ์ ์ฅํ๊ณ ๊ฒ์ํ๋ ๊ธฐ๋ฒ์ด๋ค.ํด์ํจ์๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ด ์๋ ๊ณณ์ ์๋ ค์ฃผ๋ฏ๋ก ๋ค๋์ ๋ฐ์ดํฐ ์ค์์๋ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์๋ค.ํด์ฑ์ ๊ตฌํํ ํด๋์ค๋ก HashSet, HashM
github๋๋ค์์ ์ต๋ช ํด๋์ค์ ๋๋ฑํ ๊ธฐ๋ฅ์ ํ๋ ์(Expression)์ด๋ค. ์ต๋ช ํด๋์ค๋ก ๊ฑฐ์ถ์ฅ์ค๋ฝ๊ฒ ์ ์ํ๋ ๊ฒ์ ๋ฒ์ด๋ ๊ฐ๊ฒฐํ ์๋ง์ผ๋ก ์ต๋ช ํด๋์ค๋ฅผ ๊ตฌํํ ์ ์๋ค. ์ต๋ช ํด๋์ค๋๋ค์์ ์ฝ๋๋ ๋๋ค๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ๊ฐ๋จํ ์์์ผ ๋ฟ, ์ค์ ๋ก ์ print