์ž๋ฐ”

[java] ์ œ๋„ค๋ฆญ๊ณผ ์ปฌ๋ ‰์…˜ ์ •๋ฆฌ

mmin.h 2020. 11. 15. 20:32

์ปฌ๋ ‰์…˜ : ์š”์†Œ๋“ค์˜ ์ €์žฅ์†Œ์ด๋‹ค. ์š”์†Œ์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ํฌ๊ธฐ๊ฐ€ ์ž๋™์กฐ์ ˆ๋œ๋‹ค. ์š”์†Œ์˜ ์‚ฝ์ž…์‚ญ์ œ์— ๋”ฐ๋ฅธ ์š”์†Œ์˜ ์œ„์น˜ ์ž๋™์ด๋™.
->
๋ฐฐ์—ด์ด ๊ฐ€์ง„ ๊ณ ์ • ํฌ๊ธฐ์˜ ๋‹จ์ ์„ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด๋“ค์„ ์‰ฝ๊ฒŒ ์‚ฝ์ž… ์‚ญ์ œ ๊ฒ€์ƒ‰ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋ณ€ ํฌ๊ธฐ์˜ ์ปจํ…Œ์ด๋„ˆ์ด๋‹ค.

๋ฐฐ์—ด๊ณผ ์ปฌ๋ ‰์…˜์˜ ์ฐจ์ด์ 
๋ฐฐ์—ด์€ ๊ณ ์ • ํฌ๊ธฐ ์ด์ƒ์˜ ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์—†๊ณ , ์ค‘๊ฐ„์— ๊ฐ์ฒด๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ์‘์šฉํ”„๋กœ๊ทธ๋žจ์—์„œ ์ž๋ฆฌ๋ฅผ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ปฌ๋ ‰์…˜์€ ๊ฐ€๋ณ€ ํฌ๊ธฐ๋กœ์„œ ๊ฐ์ฒด์˜ ๊ฐœ์ˆซ๋ฅผ ์—ผ๋ คํ•  ํ•„์š”๊ฐ€ ์—†๊ณ  ์ปฌ๋ž™์…˜ ๋‚ด์˜ ํ•œ ๊ฐ์ฒด๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ์ปฌ๋ ‰์…˜์ด ์ž๋™์œผ๋กœ ์ž๋ฆฌ๋ฅผ ์˜ฎ๊ฒจ์ค€๋‹ค.

 

์ปฌ๋ ‰์…˜์˜ ํŠน์ง• : ์ปฌ๋ ‰์…˜ ์ž์ฒด๊ฐ€ ์ œ๋„ค๋ฆญ ๊ธฐ๋ฒ•์œผ๋กœ ๊ตฌํ˜„๋˜์–ด์žˆ๊ณ , ์ปฌ๋ ‰์…˜์˜ ์š”์†Œ๋Š” ๊ฐ์ฒด๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

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
๋ฐฉ์ง€ -> ๋ถ€๋ชจํด๋ž˜์Šค๊ฐ€ ์ž์‹ํด๋ž˜์Šค๋ฅผ ์บ์ŠคํŒ