์ปฌ๋ ์
: ์์๋ค์ ์ ์ฅ์์ด๋ค. ์์์ ๊ฐ์์ ๋ฐ๋ผ ํฌ๊ธฐ๊ฐ ์๋์กฐ์ ๋๋ค. ์์์ ์ฝ์
์ญ์ ์ ๋ฐ๋ฅธ ์์์ ์์น ์๋์ด๋.
-> ๋ฐฐ์ด์ด ๊ฐ์ง ๊ณ ์ ํฌ๊ธฐ์ ๋จ์ ์ ๊ทน๋ณตํ๊ธฐ ์ํด ๊ฐ์ฒด๋ค์ ์ฝ๊ฒ ์ฝ์
์ญ์ ๊ฒ์ ํ ์ ์๋ ๊ฐ๋ณ ํฌ๊ธฐ์ ์ปจํ
์ด๋์ด๋ค.
๋ฐฐ์ด๊ณผ ์ปฌ๋ ์
์ ์ฐจ์ด์
๋ฐฐ์ด์ ๊ณ ์ ํฌ๊ธฐ ์ด์์ ๊ฐ์ฒด๋ฅผ ๊ด๋ฆฌํ ์ ์๊ณ , ์ค๊ฐ์ ๊ฐ์ฒด๊ฐ ์ญ์ ๋๋ฉด ์์ฉํ๋ก๊ทธ๋จ์์ ์๋ฆฌ๋ฅผ ์ฎ๊ฒจ์ผ ํ๋ค. ํ์ง๋ง ์ปฌ๋ ์
์ ๊ฐ๋ณ ํฌ๊ธฐ๋ก์ ๊ฐ์ฒด์ ๊ฐ์ซ๋ฅผ ์ผ๋ คํ ํ์๊ฐ ์๊ณ ์ปฌ๋์
๋ด์ ํ ๊ฐ์ฒด๊ฐ ์ญ์ ๋๋ฉด ์ปฌ๋ ์
์ด ์๋์ผ๋ก ์๋ฆฌ๋ฅผ ์ฎ๊ฒจ์ค๋ค.
์ปฌ๋ ์ ์ ํน์ง : ์ปฌ๋ ์ ์์ฒด๊ฐ ์ ๋ค๋ฆญ ๊ธฐ๋ฒ์ผ๋ก ๊ตฌํ๋์ด์๊ณ , ์ปฌ๋ ์ ์ ์์๋ ๊ฐ์ฒด๋ง ๊ฐ๋ฅํ๋ค.
Vector<E> ์์ E ๋์ ๊ตฌ์ฒด์ ์ธ ํ์ ์ ์ง์ ํ๋ฉด ๊ทธ ๊ฐ๋ง ์ ์ฅํ๋ ๋ฒกํฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ํน์ ํ์ ๋ง ๋ค๋ฃจ์ง ์๊ณ ์ฌ๋ฌ ์ข ๋ฅ์ ํ์ ์ผ๋ก ๋ณ์ ํ ์ ์๋๋ก ์ปฌ๋ ์ ์ ์ผ๋ฐํ์ํค๊ธฐ ์ํด <E>๋ฅผ ์ฌ์ฉํ๋ ๊ฒ. <E> ์์ฒด๋ฅผ ํ์ ๋งค๊ฐ๋ณ์๋ผ๊ณ ๋ถ๋ฅด๊ณ ํ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ผ๋ฐํ ์ํจ ํ์ ์ ์ ๋ค๋ฆญ ํ์ ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Vector<Integer> v = new Vector<Integer>(); ์ค๋ฅ x -> ํ์ง๋ง ๊ธฐ๋ณธ ํ์ ์ ๊ฐ์ด ์ฝ์ ๋๋ฉด ์๋๋ฐ์ฑ(auto boxing)์ ์ํด Wrapper ํด๋์ค ํ์ ์ผ๋ก ๋ณํ๋์ด ๊ฐ์ฒด๋ก ์ ์ฅ๋๋ค.
์ ๋ค๋ฆญ์ ๊ธฐ๋ณธ๊ฐ๋
์ ๋ค๋ฆญ์ ๋ชจ๋ ์ข
๋ฅ์ ํ์
์ ๋ค๋ฃฐ ์ ์๋๋ก, ํด๋์ค๋ ๋ฉ์๋ ํ์
๋งค๊ฐ๋ณ์๋ฅผ ์ด์ฉํ์ฌ ์ ์ธํ๋ ๊ธฐ๋ฒ.
์๋ฐ์ ์ ๋ค๋ฆญ์ c++์ ํฌํ๋ฆฟ๊ณผ ๋์ผ.
์๋ฐ์ ์ ๋ค๋ฆญ์ ํด๋์ค ์ฝ๋๋ฅผ ์ฐ์ด๋ด๋ฏ์ด ์์ฐํ ์ ์๋๋ก ์ผ๋ฐํ ์ํค๋ ๋๊ตฌ์ด๋ค.
Stack<E>์์ E์ ๊ตฌ์ฒด์ ์ธ ํ์
์ ์ง์ ํ๋ฉด, ์ง์ ๋ ํ์
์ใด ๋ค๋ฃฐ ์ ์๋ ๊ตฌ์ฒดํ๋ ์คํ์ด ๋๋ค.
์ ๋ค๋ฆญ ํ์
๋งค๊ฐ๋ณ์
์ปฌ๋ ์
ํด๋์ค์์ ํ์
๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํ๋ ๋ฌธ์๋ ๋ค๋ฅธ ๋ณ์์ ํผ๋์ ํผํ๊ธฐ ์ํด ์ผ๋ฐ์ ์ผ๋ก ํ๋์ ๋๋ฌธ์๋ฅผ ์ฌ์ฉ ex(E :element T : type V : value K : key)
์ ๋ค๋ฆญ ์ปฌ๋ ์ ํ์ฉ
Vector<E> : ๋ฐฐ์ด์ ๊ฐ๋ณ ํฌ๊ธฐ๋ก ๋ค๋ฃฐ ์ ์๊ฒ ํ๊ณ ๊ฐ์ฒด์ ์ฝ์ ์ญ์ ์ด๋์ด ์ฝ๋๋ก ๊ตฌ์ฑํ ์ปฌ๋ ์ ํด๋์ค์ด๋ค. ๋ฒกํฐ๋ ์ฝ์ ๋๋ ์์์ ๊ฐ์์ ๋ฐ๋ผ ์๋์ผ๋ก ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๊ณ , ์์์ ์ฝ์ ๊ณผ ์ญ์ ์ ๋ฐ๋ผ ์๋์ผ๋ก ์์๋ค์ ์๋ฆฌ๋ฅผ ์ด๋.
Vector ์์ฑ
Vector<Integer> v = new Vector<Integer> (5);
๊ธฐ์กด ๊ฐ์ฒด์์ฑ๊ณผ์ ์ฐจ์ด๋ ํน์ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํด ์ค ์ ์๋ค.
int, char, double ๋ฑ์ ๊ธฐ๋ณธ ํ์
์ E์ ์ฌ์ฉํ ์๋ ์๋ค.
์ด๊ธฐ ์ฉ๋์ด 5์ธ ๋ฐฑํฐ ์์ฑ
Vector ์์ ์ฝ์
v.add(Integer.valueOf(5)); -> ์ ์๋ฅผ Ingeger ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ์ฝ์
v.add(5); -> ์๋ ๋ฐ์ฑ๊ธฐ๋ฅ์ ํ์ฉ
์๋ ๋ฐ์ฑ์ ์ํด int ํ์
์ ์ ์๋ ์๋์ผ๋ก Integer ๊ฐ์ฒด๋ก ๋ณํ๋์ด ์ฝ์
๋๋ค. ๊ทธ๋ฌ๋ ๋ฒกํฐ v์๋ Integer ์ธ์ ๋ค๋ฅธ ํ์
์ ๊ฐ์ฒด๋ฅผ ์ฝ์
ํ ์ ์๋ค.
v.add(null) -> ๋๋ ์ฝ์
๊ฐ๋ฅํ๋ค.
v.add(2,100) -> ์ค๊ฐ์ ๊ฐ์ฒด ์ฝ์
๊ฐ๋ฅํ๋ค. ์ธ๋ฑ์ค 2์ ์์น์ ์ ์ 100์ ์ฝ์
.
์ด์ฝ๋๋ ์ธ๋ฑ์ค 2์ ์์น์ ์ ์ 100์ ์ฝ์
ํ๊ณ ๊ธฐ์กด์ ์ธ๋ฑ์ค 2์ ๊ทธ ๋ค์ ์๋ ์์๋ค์ ๋ชจ๋ ํ ์๋ฆฌ์ฉ ๋ค๋ก ์ด๋์ํจ๋ค. ํ์ง๋ง ๋ฒกํฐ์ 1๊ฐ์ ์์(์ธ๋ฑ์ค 0์ ์์น)๋ง ๋ค์ด ์๋ ์ํ๋ผ๋ฉด ์ด ์ฝ๋๊ฐ ์คํ๋ ๋ ์์ธ๊ฐ ๋ฐ์ํ๋ค. ์ธ๋ฑ์ค 1์ด ๋น ๊ณต๊ฐ์ด ๋๊ธฐ ๋๋ฌธ.
์์ ์์๋ด๊ธฐ
int i = v.get(i) -> ์๋ ์ธ๋ฐ์ฑ์ ์ํด v.get(1)์ด ๋ฆฌํดํ๋ Integer ๊ฐ์ฒด์ ์ ์ ๊ฐ์ด ๋ณ์ i์ ์ ์ฅ๋๋ค.
๋ฒกํฐ์ ํฌ๊ธฐ์ ์ฉ๋ ์์๋ด๊ธฐ
int len = v.size() -> ๋ฒกํฐ์ ํฌ๊ธฐ : ๋ฒกํฐ์ ๋ค์ด์๋ ์์์ ๊ฐ์
int cap = v.capapcity() -> ๋ฒกํฐ์ ์ฉ๋ : ์์ฉํ ์ ์๋ ํฌ๊ธฐ
์์ ์ญ์
v.remove(1); -> ์ธ๋ฑ์ค 1์ ์์น์ ์๋ ์์ ์ญ์
Integer m = Integer. valueOf(100); //m์ ๊ฐ์ฒด ๋ ํผ๋ฐ์ค
v. add(m);
v.remove(m); -> ๋ ํผ๋ฐ์ค m์ ์์ ์ญ์ ๊ฐ๋ฅ
v.removeAllElements(); -> ๋ชจ๋ ์์๋ฅผ ์ญ์
ArrayList<E>
๊ฐ๋ณ ํฌ๊ธฐ์ ๋ฐฐ์ด์ ๊ตฌํํ ์ปฌ๋ ์
ํด๋์ค. ๊ฒฝ๋ก๋ช
์ java.util.ArrayList, Vector ํด๋์ค์ ๊ฑฐ์ ๋์ผ.
์ฐจ์ด์ ์ ArrayList๋ ์ค๋ ๋ ๊ฐ์ ๋๊ธฐํ๋ฅผ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ค์์ ์ค๋ ๋๊ฐ ๋์์ ArrayList์ ์์๋ฅผ ์ฝ์
ํ๊ฑฐ๋ ์ญ์ ํ ๋ ArrayList์ ๋ฐ์ดํฐ๊ฐ ํผ์๋ ์ฐ๋ ค๊ฐ ์๋ค. ํ์ง๋ง ๋ฉํฐ์ค๋ ๋ ๋๊ธฐํ๋ฅผ ์ํ ์๊ฐ ์๋ชจ๊ฐ ์๊ธฐ ๋๋ฌธ์ ArrayList๋ Vector๋ณด๋ค ์๋๊ฐ ๋นจ๋ผ, ๋จ์ผ ์ค๋ ๋ ์์ฉ์๋ ๋ ํจ๊ณผ์ ์ด๋ค.
์ฝ์ ์ ๋ฒกํฐ์ ์ ์ฌ
ArrayList์ ํฌ๊ธฐ ์์๋ด๊ธฐ
int len = a.size() //a ์ ๋ค์ด์๋ ์์์ ๊ฐ์
ArrayList๋ ๋ฒกํฐ์ ๋ฌ๋ฆฌ ํ์ฌ ์ฉ๋์ ๋ฆฌํดํ๋ ๋ฉ์๋๊ฐ ์๋ค.
ArrayList์ ์์ ์ญ์
์ญ์ ๋ ์ ์ฌ.
a.clear(); -> ๋ชจ๋ ์์๋ฅผ ์ญ์ ํ๋ ๋ฉ์๋
์ปฌ๋ ์
์ ์์ฐจ ๊ฒ์์ ์ํ Iterator
vector,ArrayList, LinkedList, Set๊ณผ ๊ฐ์ด ์์๊ฐ ์์๋๋ก ์ ์ฅ๋ ์ปฌ๋ ์
์์ ์์๋ฅผ ์์ฐจ์ ์ผ๋ก ๊ฒ์ํ ๋๋ Java.util ํฉํค์ง์ Interator<E> ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ๋ฉด ํธ๋ฆฌํ๋ค.
์ฌ๊ธฐ์ <E>์๋ ์ปฌ๋ ์
์ผ ๋งค๊ฐ๋ณ์์ ๋์ผํ ํ์
์ ์ง์
Iterator() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด Iterator ๊ฐ์ฒด๋ฅผ ๋ฆฌํดํ๋ฉฐ, ์ด ๊ฐ์ฒด๋ฅผ ์ด์ฉํ์ฌ ์ธ๋ฑ์ค ์์ด ์ปฌ๋ ์ ์ ์์์ ๋ํด ์์ฐจ๊ฒ์์ด ๊ฐ๋ฅํ๋ค.
Iterator๋ฅผ ์ด์ฉํ ๋ชจ๋ ์ ์ ์ถ๋ ฅํ๊ธฐ
Iterator<Integer> it = v.iterator(); // Iterator ๊ฐ์ฒด ์ป๊ธฐ
While(it.hasNext()){
int n = it.next();
System.out.println(n);
}
HashMap<K,V>
HashMap<K,V> ์ปฌ๋ ์
์ ๊ฒฝ๋ก๋ช
์ด java.util.HashMap์ด๋ฉฐ, key ์ value ๊ฐ์ ์์ผ๋ก ๊ตฌ์ฑ๋๋ ์์๋ฅผ ๋ค๋ฃฌ๋ค.
put(key,value) ๋ฉ์๋๋ ํค์ ๊ฐ์ ๋ฐ์ ํค๋ฅผ ์ด์ฉํ์ฌ ํด์ ํจ์๋ฅผ ์คํ์ํค๊ณ ํด์ ํจ์๊ฐ ๋ฆฌํดํ๋ ์์น์ ํค์ ๊ฐ์ ์ ์ฅํ๋ค.
get(key)๋ ๋ค์ ํค๋ฅผ ์ด์ฉํ์ฌ ๋์ผํ ํด์ ํจ์๋ฅผ ์คํํ์ฌ ๊ฐ์ด ์ ์ฅ๋ ์์น๋ฅผ ์์๋ด์ด ๊ฐ์ ๋ฆฌํดํ๋ค.
ํด์๋งต์ ํด์ ํจ์๋ฅผ ํตํด ํค์ ๊ฐ์ด ์ ์ฅ๋๋ ์์น๋ฅผ ์ ์ฅํ๋ฏ๋ก ์ฌ์ฉ์๋ ๊ทธ ์์น๋ฅผ ์ ์ ์๊ณ , ์ฝ์ ๋๋ ์์์ ๋ค์ด์๋ ์์น ๋ํ ๊ด๊ณ๊ฐ ์๋ค.
ํด์๋งต์ ์ฅ๋จ์
1. ์์์ ์ฝ์
์ญ์ ๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค. -> ์์์ ์ฝ์
์ญ์ ์ ๋ค๋ฅธ ์์๋ค์ ์์น ์ด๋์ด ํ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
2. ์์ ๊ฒ์์ด ๋ ๋น ๋ฅด๋ค. -> get(key) ๋ฉ์๋๊ฐ ํธ์ถ๋๋ฉด ํด์ ํจ์๊ฐ key๊ฐ ์ ์ฅ๋ ์์น๋ฅผ ๋จ๋ฒ์ ์ฐพ์๋ด๋ฏ๋ก Vector<E> ๋ ArrayList<E>์์์ฒ๋ผ ๋ชจ๋ ์์๋ค์ ํ๋์ฉ ๋น๊ตํ๋ ์๊ฐ ๋ญ๋น๊ฐ ์ ํ ์๊ธฐ ๋๋ฌธ์ด๋ค.
3. ํด์๋งต์ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ์ฌ ์์์ ์ ๊ทผํ ์ ์๊ณ ์ค์ง ํค ๋ก๋ง ๊ฒ์ํด์ผํ๋ค -> ๊ทธ๋ฌ๋ฏ๋ก ํด์๋งต์ ๋น ๋ฅธ ์ฝ์ ๊ณผ ๊ฒ์์ด ํ์ํ ์์ฉ์ ์ ํฉํ๋ค.
ํค๋ก ๊ฐ ์ฝ๊ธฐ
String kor1 = h.get(“love”) ; love๋ ํค๋ฅผ ์ ๋ฌํ๋ฉด ์ฌ๋์ด๋ ๊ฐ ์ป์ ์ ์๋ค.
๋ง์ฝ ํด์๋งต์ ์๋ ํค๋ก get์ ํธ์ถํ๋ฉด null์ ๋ฆฌํดํ๋ค.
ํค๋ก ์์ ์ญ์
h.remove(“love”); -> put(“love”,”์ฌ๋”)์ผ๋ก ์ฝ์
ํ ์์ ์ญ์
์์ ๊ฐ์ ์์๋ด๊ธฐ
int n = h.size() ํ์ฌ h๋ด์ ์๋ ์์์ ๊ฐ์ ๋ฆฌํด
ํด์๋งต์ ์ ์ฒด ๊ฒ์
Set<String> Keys = h.keySet(); // ํด์๋งต h์ ์๋ ๋ชจ๋ ํค๋ฅผ set ์ปฌ๋ ์
์ผ๋ก ๋ฆฌํด
Iterator<String> it = keys.iterator(); //Set์ ๊ฐ ๋ฌธ์์ด์ ์์ฐจ ๊ฒ์ํ๋ Iterator ๋ฆฌํด
while(it.hasNext()){
String key = it.next();
String value = h.get(key);
System.out.println.....
}
LinkedList<E>
LinkedList<E>๋ List<E> ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค๋ก์ ๊ฒฝ๋ก๋ช
์ด java.util.LinkedList์ด๋ค. LinkedList๋ ์์๋ค์ ์๋ฐฉํฅ์ผ๋ก ์ฐ๊ฒฐํ์ฌ ๊ด๋ฆฌํ๋ค๋ ์ ์ด Vector, ArrayList์ ์ฐจ์ด์ ์ด๋ค. LinkedList๋ ๋งจ ์๊ณผ ๋งจ ๋ค๋ฅผ ๊ฐ๋ฆฌํค๋ head, tail ๋ ํผ๋ฐ์ค๋ฅผ ๊ฐ์ง๊ณ ์์ด, ๋งจ ์์ด๋ ๋งจ ๋ค, ์ค๊ฐ์ ์์์ ์ฝ์
์ด ๊ฐ๋ฅํ๋ฉฐ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ์ฌ ์์์ ์ ๊ทผํ ์๋ ์๋ค.
Collections ํด๋์ค ํ์ฉ
java.util ํจ์บ์ง์ ํฌํจ๋ Collections ํด๋์ค๋ ๋ค์๊ณผ ๊ฐ์ด ์ปฌ๋ ์
์ ๋ค๋ฃจ๋๋ฐ ์ ์ฉํ ์ฌ๋ฌ ๋ฉ์๋๋ฅผ ์ง์ํ๋ค.
sort() -> ์ปฌ๋ ์
์ ํฌํจ๋ ์์๋ค์ ์ ๋ ฌ
reverse() -> ์์๋ฅผ ๋ฐ๋ ์์ผ๋ก ์ ๋ ฌ
max(),min() -> ์์๋ค์ ์ต๋๊ฐ๊ณผ ์ต์๊ฐ ์์๋ด๊ธฐ
binarySearch() -> ์ด์ง ํ์
Collections ํด๋์ค์ ๋งค์๋๋ ๋ชจ๋ static ํ์
์ด๋ฏ๋ก Collections ๊ฐ์ฒด๋ฅผ ์์ฑํ ํ์๊ฐ ์๋ค.
๋ณธ๋ Collectios ํด๋์ค๋ java.lang.Comparable์ ์์๋ฐ๋ element์ ๋ํด์๋ง ์๋ํ๋ค. Int, char, double ๋ฑ์ ๊ธฐ๋ณธ ํ์
๊ณผ Stirng ํด๋์ค๋ ์ด ์กฐ๊ฑด์ ์ค์กฑํ์ง๋ง, ์ฌ์์๊ฐ ํด๋์ค๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ java.lang.Comparable์ ์์ ๋ฐ์์ผํ๋ค.
์ ๋ค๋ฆญ ๋ง๋ค๊ธฐ
์ ๋ค๋ฆญ ํด๋์ค๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๊ธฐ์กฐ๋ฌ ํด๋์ค ์์ฑ๋ฐฉ๋ฒ๊ณผ ์ ์ฌํ๋ค. ํด๋์ค ์ด๋ฆ ๋ค์์ ์ ๋ค๋ฆญ ํ์
์ ๋งค๊ฐ๋ณ์๋ฅผ ์จ์ฃผ๋ฉด ๋๋ค.
public class MyClass<T>{ //์ ๋ค๋ฆญ ํด๋์ค Myclass, ํ์
๋งค๊ฐ๋ณ์ T
}
์ ๋ค๋ฆญ ํด๋์ค์ ๋ ํผ๋ฐ์ค ๋ณ์๋ฅผ ์ ์ธํ ๋ ๋ค์๊ณผ ๊ฐ์ด ํ์
๋งค๊ฐ๋ณ์์ ๊ตฌ์ฒด์ ์ธ ํ์
์ ์ ๋๋ค.
MyClass<String> s
List<Integer> li
์ ๋ค๋ฆญ ๊ฐ์ฒด ์์ฑ – ๊ตฌ์ฒดํ
์ ๋ค๋ฆญ ํด๋์ค์ ๊ตฌ์ฒด์ ์ธ ํ์
์ ๋์
ํ์ฌ ๊ตฌ์ฒด์ ์ธ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ณผ์ ์ ๊ตฌ์ฒดํ๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ์ด ๊ณผ์ ์ ์๋ฐ ์ปดํ์ผ๋ฌ์ ์ํด ์ด๋ฃจ์ด ์ง๋ค.
์ ๋ค๋ฆญ์ ๊ตฌ์ฒดํ์๋ ๊ธฐ๋ณธ ํ์
์ ์ฌ์ฉํ ์ ์์์ ์ ์ํด์ผํ๋ค.
ํ์
๋งค๊ฐ๋ณ์
์ ๋ค๋ฆญ ํด๋์ค ๋ด์์ ์ ๋ค๋ฆญ ํ์
์ ๊ฐ์ง ๊ฐ์ฒด์ ์์ฑ์ ํ์ฉ๋์ง ์๋๋ค.
public class MyValue<E>{
E create(){
E a = new E() ; ์ปดํ์ผ ์ค๋ฅ. ์ ๋ฌ๊ธฐ ํ์
์ ๊ฐ์ฒด ์์ฑ๋ถ๊ฐ
return a;
}
}
๊ทธ ์ด์ ๋ ์ปดํ์ผ๋ฌ๊ฐ MyVector<E> ํด๋์ค์ new E() ๋ผ์ธ์ ์ปดํ์ผํ ๋ E์ ๋ํ ๊ตฌ์ฒด์ ์ธ ํ์
์ ์ ์ ์์ด, ํธ์ถ๋ ์์ฑ์๋ฅผ ๊ฒฐ์ ํ ์ ์๊ณ , ๋ํ ๊ฐ์ฒด ์์ฑ ์ ์ด๋ค ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํด์ผ ํ ์ง ์ ํ ์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ ๋ค๋ฆญ๊ณผ ๋ฐฐ์ด
์ ๋ค๋ฆญ์์๋ ๋ฐฐ์ด์ ๋ํ ์ ํ์ ๋๊ณ ์๋ค. ์ ๋ค๋ฆญ ํด๋์ค ๋๋ ์ธํฐํ์ด์ค ํ์
์ ๋ฐฐ์ด์ ์ ์ธํ ์์๋ค.
Gstack <Integer>{} gs = new Gstack<Integer> [10]; // ์ปดํ์ผ ์ค๋ฅ
๊ทธ๋ฌ๋ ์ ๋ค๋ฆญ ํ์
์ ๋ฐฐ์ด ์ ์ธ์ ํ๋ฝ๋๋ค.
public void MyArray(T[] a) { }
์ ๋ค๋ฆญ ๋ฉ์๋
ํด๋์ค์ ์ผ๋ถ ๋ฉ์๋๋ก๋ง ์ ๋ค๋ฆญ์ผ๋ก ๊ตฌํํ ์๋ ์๋ค. toStack() ๋ฉ์๋๋ฅผ ์ ๋ค๋ฆญ์ผ๋ก ๊ตฌํ
class GebericMethodEx{
static <T> void toStack(T[] a, Gstack<T> gs){}
ํ์
๋งค๊ฐ๋ณ์๋ ๋ฉ์๋์ ๋ฆฌํด ํ์
์์ ์ ์ธ๋๋ค. ์์ toStack()์์ <T>๊ฐ ํ์
๋งค๊ฐ๋ณ์์ ์ ์ธ์ด๋ค. ์ ๋ค๋ฆญ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋๋ ์ปดํ์ผ๋ฌ๊ฐ ๋ฉ์๋์ ์ธ์๋ฅผ ํตํด ํ์
์ ์ ์ถํ ์ ์์ด ์ ๋ค๋ฆญ ํด๋์ค๋ ์ธํฐํ์ด์ค์๋ ๋ฌ๋ฆฌ ํ์
์ ๋ช
์ํ์ง ์์๋ ๋๋ค.
String[] sArray = new String[100];
Gstack<String> stringStack = new Gstack<String>();
GenericMethodEx.toStack(sArray, stirngStack); //ํ์
๋งค๊ฐ๋ณ์๊ฐ T๋ฅผ String ์ผ๋ก ์ ์ถ
String[] sArray = new String[100];
Gstack<Object> objectStack = new Gstack<Object>();
GenericMethodEx.toStack(sArray, objectStack); //ํ์
๋งค๊ฐ๋ณ์๊ฐ T๋ฅผ Object๋ก ์ ์ถ
์ฌ๊ธฐ์ sArray๋ String[] ํ์ ์ด๋ฉฐ, objectStack์ Gstack<object>์ด๋ค. Object๊ฐ String์ ์ํผ ํด๋์ค์ด๋ฏ๋ก ์ปดํ์ผ๋ฌ๋ Object ํ์ ์ผ๋ก ์ ์ถํ๋ค.
์ ๋ค๋ฆญ์ ์ฅ์
1. ๋์ ์ผ๋ก ํ์
์ด ๊ฒฐ์ ๋์ง ์๊ณ ์ปดํ์ผ ์์ ํ์
์ด ๊ฒฐ์ ๋๋ฏ๋ก ๋ณด๋ค ์์ ํ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฅ
2. ๋ฐํ์ ํ์
์ถฉ๋ ๋ฌธ์ ๋ฐฉ์ง
3. ๊ฐ๋ฐ ์ ํ์
์บ์คํ
์ ์ฐจ ๋ถํ์
4. ClassCastException ๋ฐฉ์ง -> ๋ถ๋ชจํด๋์ค๊ฐ ์์ํด๋์ค๋ฅผ ์บ์คํ